[Android] Всплывающее сообщение, 22 [Android] программирование в eclipse, 18 [Android] Создание собственного компонента View, 21 [c#] TCP/IP, 18 [c++ Builder] Message сообщения, 15 [c++ Builder][TCPServer] потоки, 16 [c++] Виртуальные функции, 17 [c++] перекодировка из Utf8 в Cp1251 (Windows), 16 [c++][DLL], 14 [c++][termios] Настройка COM порта, 6 [c++][termios] Подключение к файлу COM порта, 6 [Delphi] DLL, 12 [Delphi] Message сообщения, 14 [Delphi] Запрет запуска двух копий программы, 15 [Delphi][DLL]Параметр char* из c++, 14 [Delphi][Indy] Отправка и прием почты, 13 [Delphi][TSearchrec] поиск файлов, 12 [FireBird] Процедуры, 12 [Free BSD] Настройка после установки, 10 [JAVA] Внешний вид, 8 [JAVA] Вызов внешней программы, 7 [JAVA] Диалоги сообщений, ввода, и т.д., 8 [JAVA] Запись строк, 7 [JAVA] запуск программы с большим heap size, 8 [JAVA] копирование файла ПРИМИТИВНО, 8 [JAVA] Определение, 6 [JAVA] определение throw, 8 [JAVA] открытие файла для чтения по строкам, 19 [JAVA] Получение данных с внешнего процесса, 8 [JAVA] Преобразование из String в int, 7 [JAVA] Работа с файлами, 7 [JAVA] Раскладка клавиатуры, 19 [JAVA] Системные свойства, 7 [JAVA] Сравнение значений объектов, 7 [JAVA][JNI], 20 [JAVA][JTable] Сортировка, 19 [JAVA][ME] Manifest для работы в полный экран на сенсорных устройствах, 15 [JAVA][RXTX] COM порты, 19 [JAVA][SUSE] Расположение библиотек, 19 [JAVA][SWING] списки и фокус, 19 [JAVA][SWING] таймеры, 19 [JAVA][Сериальзация], 7 [Linux] Выключение Compiz в GNOME, 5 [Linux] USB вендоры, 10 [Linux] Автовход под root, 6 [Linux] Автозапуск для icewm, 4 [Linux] Автоматическое выполнение команд, после startx, 4 [Linux] Архивация разархивация, 11 [Linux] Выставление глобальной переменной, 9 [Linux] Динамические диски, 16 [Linux] Завершение работы и перезагрузка, 4 [Linux] Изменение раскладки клавиатуры, 10 [Linux] Монтирование флешки, 4 [Linux] Назначение глобальных путей в Linux, 4 [Linux] очистка КЭШа чтения, 5 [Linux] Применение новых библиотек в системе, 4 [Linux] Разбиение и форматирование диска, 18 [Linux] Скорость повтора клавиатуры, 11 [Linux] Создание swap в файле, 13 [Linux] Создание ссылок, 10 [Linux] Установка ip и шлюза, 8 [Linux] Установка атрибутов файлу, 4 [Linux] Установка оконного менеджера и менеджера рабочего стола OPENSUSE, 4 [Linux][Debian/Ubuntu] выбор менеджера окон по умолчанию DEbian/Ubuntu, 6 [Linux][Debian/Ubuntu] установка пакета deb, 15 [Linux][Debian/Ubuntu] Установка программ в Ubuntu, 4 [Linux][Grub] Восстановление, 11 [Linux][icewm] в минимальной конфигурации для автостарта, 6 [Linux][Icewm] Настройка DPI, 14 [Linux][Lazarus] Сборка с GTK2 из исходников, 11 [Linux][Lazarus] Убрать отладочную информацию, 11 [Linux][Samba] Подсоединение папки из сети, 6 str 1 [Linux][Samba] Полезные команды, 5 [Linux][Slackware] Установка и удаление программ, 8 [Linux][Slackware] Установка системы, 9 [Linux][Slax] Настройка WindowManager, 9 [Linux][Slax] Установка на жесткий диск совместно с Windows 7, 9 [Linux][Squid] Настройка, 11 [Linux][Squid] Настройка на Ubuntu, 11 [Linux][SUSE/RedHat] Установка контролера COM портов NetMos, 12 [Linux][SUSE] Воспроизведение mp3, dvd, 10 [Linux][SUSE] Создание RPM, 9 [Linux][SUSE] Создание RPM Вариант 2, 9 [Linux][SUSE] Установка NVIDIA из исходников, 10 [Linux][Virtual Box] Запуск VM в отдельной консоли, 11 [Linux][Wine] Установка DirectX, 11 [Linux][Xorg] Реконфиг, 14 [Megafon Modem 1550] Команды для Hyper Terminal, 13 [OGRE] Tutorial-1, 20 [OGRE] Tutorial-2, 20 [OGRE] Tutorial-3, 21 [OGRE] Настройка среды Visual Studio 2010, 20 [QT4] Process получение данных, 15 [QT4] QShortcut, 17 [QT4] QString преобразование числа, 10 [QT4] Socket клиент, 15 [QT4] Socket сервер, 15 [QT4] Аналог DoEvents, 5 [QT4] добавление таймера, 5 [QT4] Запись текста, 4 [QT4] Кодировка текстового файла, 4 [QT4] Непоказывать заголовок окна, 4 [QT4] Определение текущей раскладки клавиатуры, 13 [QT4] Отключить обновления и включить – увеличение скорости фоновой загрузки таблиц, 5 [QT4] Открытие внешней программы, 5 [QT4] Отображение изображений в PaintEvent, 5 [QT4] Создание папки, 5 [QT4] Фильтр клавиш, отлавливать нажатия любым виджетом, 4 [QT4][QExtSerialPort] Сборка и настройка, 11 [QT4][SQLITE3], 13 [WinApi] Чтение запись файла, 18 [Windows 7] Восстановление загрузчика, 10 [Windows 7] Отключение QOS, 14 [Xors3D] deltaTime составление, 16 [Xors3D] Тени, 16 str 2 [Linux][Debian/Ubuntu] Установка программ в Ubuntu sudo apt-get install prog-0.1.5 [Linux] Назначение глобальных путей в Linux в домашней папке (cd ~) редактируем файл .profile дописываем PATH=путь:$PATH export PATH [Linux] Завершение работы и перезагрузка halt reboot [Linux] Применение новых библиотек в системе ldconfig [Linux] Установка оконного менеджера и менеджера рабочего стола OPENSUSE /etc/sysconfig там файлы windowmanager поставить например icewm-session, displaymanager например gdm [Linux] Автоматическое выполнение команд, после startx в домашнем каталоге в .profile в конец добавить команды [Linux] Автозапуск для icewm главный файл запуска после старта иксов /root/.xsession [Linux] Монтирование флешки mount –t vfat /dev/sdb1 /media [Linux] Установка атрибутов файлу chmod u+x file [QT4] Фильтр клавиш, отлавливать нажатия любым виджетом 1) дать понять какого виджета отлавливать ui->checklist->installEventFilter(this); 2) в форме определить слот private slots: bool eventFilter(QObject*, QEvent*); 3) код программы cpp bool WinMain::eventFileter(QObject* o, QEvent* e) { if(o==ui->checklist){ //если конкретный виджет отловлен if(e->type()==QEvent::KeyPress) //если нажаты кнопки { QKeyEvent* ke = (QKeyEvent*)e; //привести тип к клавиатурному if(ke->key()==Qt::Key_BackSpace){ //какая кнопка нажата //что-то делаем } } } return false; } [QT4] Запись текста QFile file(“file.txt”); if(!file.open(QIODevice::WriteOnly)){} QTextStream out(&file); out << text << endl; [QT4] Кодировка текстового файла stream.setCodec(“UTF-8”); [QT4] Непоказывать заголовок окна this->setWindowFlags(Qt::FramelessWindowHint); str 3 [QT4] Аналог DoEvents qApp->processEvents(); [QT4] Открытие внешней программы popen(“файл”,”r”); //process open (popen) [QT4] Структура tm у time.h int tm_sec; //0-60 int tm_min; //0-59 int tm_hour; //0-23 int tm_mday; //1-31 int tm_mon; //0-11 int tm_year; //1900+переменная (1900+110=2010) int tm_wday; //день недели 0-6 int tm_yday; //0-365 int tm_isdst; //DST [-1/0/1] [QT4] Создание папки QDir dir; dir.mkdir(“каталог”); [Linux] Выключение Compiz в GNOME Alt+F2 ввести metacity –replace [QT4] Отключить обновления и включить – увеличение скорости фоновой загрузки таблиц QTableWidget setUpdatesEnabled(false); [Linux] очистка КЭШа чтения sync echo “3” > /proc/sys/vm/drop_caches [QT4] Отображение изображений в PaintEvent QPoint po(0,0); QImage img(“img.png”); QPainter pa(this); pa.begin(this); pa.drawImage(po,img); pa.end(); [QT4] добавление таймера QTimer *timer = new QTimer(this); connect(timer, SIGNAL(timeout()), this, SLOT(on_timer())); timer->start(100); [Linux][Samba] Полезные команды smbd – запуск самбы smbtree – показывает дерево каталогов в сети smbrestart, smbd start, service smb restart – запуск перезапуск НАСТРОЙКА САМБЫ /etc/samba/smb.conf [global] workgroup=GROUP - имя рабочей группы netbios name=FILESERVER - имя сервера serverstring=Файловый сервер - описание log file=/var/Samba/log.log log level=3 syslog=0 max log size=50 local master=no security=share display charset=CP1251 - кодировка имени файлов unix charset=UTF-8 dos charset=cp866 [Имя общей папки] path=/home/user str 4 force user=root force group=root read only=ok guest ok=yes [Linux][Samba] Подсоединение папки из сети mount.cifs //192.168.0.1/1/ /media –o user=nobody, guest, iocharset=utf8, dir_mode=0777, file_mode=0666, rw, nosuid, nodev [Linux] Автовход под root отключить xdm и прописать startx& в /etc/rc.local (/etc/rc.d/rc) вариант 2: в /etc/init.d/rc в конце добавить нужный рабочий стол например: startxfce4 [c++][termios] Настройка COM порта void setup_tty(int fd){ struct termios tios; if(tcgetattr(tty_fd, &tios)<0) return -1; tios.c_cflag &= ~(CSIZE | CSTOPB | PARENB | CLOCAL); tios.c_cflag |= CS8 | CREAD | HUPCL; tios.iflag = IGNBRK | IGNPAR; tios.c_oflag=0; tios.c_lflag=0; tios.c_cc[VMIN] = 0; tios.c_cc[VTIME] = 0; tios.c_cflag &= ~CRTSCTS; cfsetospeed(&tios, B9600); cfsetispeed(&tios, B9600); if(tcsetattr(fd, TCSAFLUSH, &tios)<0) return -1; return 1;} //откл ненужных //вкл нужные //1 минимум символов для чтения //время ожидания [c++][termios] Подключение к файлу COM порта int devfile = open(“/dev/ttyS0”, O_NONBLOCK | O_RDWR | O_NOCTTY, 0); [Linux][icewm] в минимальной конфигурации для автостарта /etc/X11/icewm – глобальные настройки для всех $HOME/.icewm – настройки пользователей в каталог с настройками включить файл startup – это скрипт автозагрузки, назначить права ему chmod u+x ./startup, в /root/.xsession добавить путь xxkb переключатель раскладок клавиатуры ~/.xinitrc – скрипт запускается сразу после старта иксов, для автозапуска иксов в /etc/init.d/rc перед exit 0 вставить строку /bin/su –root –c “/bin/sh –lc startx” [Linux][Debian/Ubuntu] выбор менеджера окон по умолчанию DEbian/Ubuntu sudo update-alternatives --set x-window-manager /usr/bin/icewm sudo update-alternatives --set x-session-manager /usr/bin/icewm-session [JAVA] Определение J2S - Standart обычное применение J2M - Mobile для мобильных устройств J2E - Enterprise - для интернет служб JVM - виртуальная машина Java JMS - спецификация виртуальной машины JDK - программный инструмент разработки JAVA™ 2 Runtime Environment - фрейм для выполнения Среды разработки Eclipse, NetBeans Простой пример public class First{ public static void main(String[] args){ System.out.print(“Hello World”); } } Компиляция javac First.java после станет First.class Запуск бинарника class - java First Когда создается бинарник jar его запускать java -jar file Ввод данных в консоли, создаем поток import java.io.*; InputStreamReader is = new InputStreamReader(System.in); буферизация данных BufferedReader bis = new BufferedReader(is); String str = bis.readLine(); str 5 [JAVA] Сравнение значений объектов Каждый объект содержит метод eqals() возвращает Boolean - например: x.equals(y) [JAVA] Преобразование из String в int int x = Integer.valueOf(str).intValue(); [JAVA] Работа с файлами import java.io.*; import java.util.*; File fp = new File(“com\\learn\\FileTest.java”); if(fp.isFile()) fp.createNewFile(); Можно связывать с директориями ВВОД: FileInputStream is = new FileOutputStream(fp); //имя вместо fp while((b=is.read())!=-1){ //int b System.out.printLn(“Прочитано байт = “ + b); } ВЫВОД: FileOutputStream os = new FileOutputStream(fp); //или вместо fp имя файла os.write(pArray[i]); os.close(); Есть классы DataInpusStream и DataOutputStream которые работают с структурированными типами данных writeChar, reading и т.д. Читать строки BufferedReader = new BufferedReader(new InputStreamReader(fs,charset)) Есть тип RandomAccessFile() в котором можно использовать seek [JAVA][Сериальзация] Объявление класса с сериальзацией class test implements serializable Не подвергаются поля для сериализации static и transient Пример: ЗАПИСЬ: Object ds = new DemoSerial(); File fp = new File(“D:\\temp”,”demo.txt”); ObjectOutputStream ostream = new ObjectOutputStream(new FileOutputStream(fp)); ostream.writeObject(ds); ЧТЕНИЕ: Object d = new DemoSerial(); DemoSerial obj = (DemoSerial)istream.readObject(); ПРИ РАБОТЕ С ФАЙЛАМИ ОБРАМЛЯТЬ В try catch [JAVA] Запись строк PrintWriter pr = new PrintWrite(file); pr.Println(“”); [JAVA] Вызов внешней программы Process p = null; p=Runtime.getRuntime().exec(str); //str - команда [JAVA] Системные свойства Properties p = System.getProperties(); String s = p.getProperty(“user.home”); Ключи: java.version //версия явы java.vendor //изготовитель JVM java.vendor.url //адрес изготовителя в инете java.home //каталог куда установлена система JAVA java.class.version //версия библиотек java.class.path //путь к библиотекам os.name //название ОС os.version //версия ОС file.separator //разделитель файлов path.separator //разделитель пути line.separator //разделитель строк user.name //имя пользователя str 6 user.home user.dir //домашний каталог пользователя //текущий рабочий каталог [JAVA] определение throw try{ throw new IOException(“message”); }catch(IOException e){} [JAVA] копирование файла ПРИМИТИВНО public static void fileCopy(InputStream is, OutputStream os) throws IOException { int nLength; byte[] buf = new byte[8000]; while(true) { nLength = is.Read(buf); If(nLength<0) break; os.write(buf, 0, nLength); } is.close(); os.close(); } public void CopyFile(String src, String dest){ FileInputStream fis = new FileInputStream(src); FileOutputStream fos1 = new FileOutputStrem(fos1); fileCopy(fis, fos1); } [JAVA] Диалоги сообщений, ввода, и т.д. String str = JOptionPane.showInputDialog(“xxx”); JOptionPane.showMessageDialog(null, “xxx”); [JAVA] Получение данных с внешнего процесса Process p = Runtime.getRuntime().exec(str); BufferedReader input = new BufferedReader(new InputStreamReader(p.getInputStream())); line = input.readLine(); [JAVA] запуск программы с большим heap size java -Xmx10000 -jar ./jarfile.jar -Xms512m -Xmx512m минимум максимум [JAVA] Внешний вид try{ UIManager.setLookAndFeel( UIManager.getCrossPlatformLookAndFeelClassName()); } catch(Exception ex){} Другие аргументы setLookAndFeel getSystemLookAndFeelClassName() - подстройка под ОС “com.sun.java.swing.plaf.gtk.GTKLookAndFeel” - тема GTK “com.sun.java.swing.plaf.windows.WindowsLookAndFeel” [Linux] Установка ip и шлюза ifconfig eth0 <ip> netmask <маска>; route add default gw 192.168.0.1 eth0 [Linux][Slackware] Установка и удаление программ Установить src2pkg (сначала скачать) installpkg src2pkg-2.2-noarch-3.tgz Запаковывание исходников в пакет src2pkg -e=’--params’ -C mc-4.7.0.4.tar.bz -e опции компиляции с параметрами -C положить созданный пакет в тек каталог str 7 [Linux][Slackware] Установка системы командой cfdisk создать 2 раздела LinuxSwap и Linux, Linux раздел сделать bootable потом выбрать write и quit потом команда Setup выбрать пункт addswap и следовать подсказкам инсталлятора [Linux][SUSE] Создание RPM Например мы имеем в каталоге /root/port файлы: port-бинарник, readme и port.1 Создаем /root/port/port.spec #общее описание summary: Program to control your serial device #название проекта Name:port #Его версия Version 1.0 #Релиз Release:99 #группа ПО Group:Monitoring #Можно указать свое имя Licence:GPL #Информация о создателе пакета Packager: User URL:http://... #Полное описание %Description программа порт предназначета бла бла бла #Файлы которые будут помещены в пакет %files %doc /root/port/README /root/port/port /root/port/port.1 для построения ввести rpm -bb /root/port/port.spec [Linux][SUSE] Создание RPM Вариант 2 Перейти в каталог /usr/src/packages/BUILDROOT этот каталог типа когневой в Linux “/”, там восстанавливаем кусок файловой системы (записываем файлы и каталоги так как они должны располагаться после установки. В SPEC файле в разделе %files пишем пути к нашим файлам. команда rmpbuild -bb путь.spec создаст пакет и скажет, где его забрать. [Linux] Выставление глобальной переменной export TMPFIR=/home/user/tmp export TEMPDIR=${TMPDIR} [Linux][Slax] Установка на жесткий диск совместно с Windows 7 Скачать Grub4Dos извлеч файлы grub.exe и grldr в C:\, переименовать bootmgr в bootmgr7, переименовать grldr в bootmgr. Редактировать menu.lst, нужен ext2 раздел, например hda2 для хранения изменений файловой системы. Иначе при перезапуске настройки стираются. Приоритеты: модули->changes->rootcopy Желателен SWAP раздел Пример menu.lst: color cyan/blue white/blue timeout 5 title SLAX kernel (hd0,0)/boot/vmlinuz ramdisk_size=6666 root=/dev/ram0 rw autoexec=xconf;telinit~4 changes=/mnt/hda2/ initrd=(hd0,0)/boot/initrd.gz boot title WinXP find --set-root /ntldrxp chainloader /ntldrxp [Linux][Slax] Настройка WindowManager В консоле набрать команду xwmconfig и выбрать какой рабочий стол использовать str 8 [Linux][SUSE] Установка NVIDIA из исходников Зависимости gcc, make, kernel-source, kernel-syms, для OPENSUSE 11.2 - kernel-desctop-devel Подготовка исх. кодов ядра cd /usr/src/linux make cloneconfig make prepare Загрузить исходники в /usr/share/doc/nvidia Перейти на runlevel 3. Войти в консоль alt+ctrl+F1 и набрать init 3 под root-ом, перейти в каталог с драйверами ввести sh NVIDIA-Linux…run -q Настройка Xorg nvidia-xconfig sax2 -r -m 0=nvidia [Linux][SUSE] Воспроизведение mp3, dvd Варианты: 1) Скачать: http://opensuse-community.org/Restricked_formats/11.3 2) Доб репозиторий: http://packman.inode.at/suse/11.3 3)zypper addrepo -f http://packman.inode.at/suse/11.3 zypper addrepo -f http://www.opensuse-guide.org/repo/11.3 zypper install ffmpeg flash-player libdvdcss libxine1-codecs w32codec-all k3b-codecs lame mplayer smplayer vlc [Windows 7] Восстановление загрузчика bootsect /mbr All bootsect /nt60 All лучше: bootrec /fixmbr bootrec /fixboot еще: bootsect /nt60 C: /mbr [Linux] Создание ссылок ln file1 file2 - создать жесткую ссылку в тек каталоге ln с ключем -S создает символьную ссылку в качестве первого параметра пишется АБСОЛЮТНЫЙ АДРЕС - также ссылки можно создать на каталог [QT4] QString преобразование числа QString str; str.setNum(число); [Linux] USB вендоры lsusb узнать id usb устройств создать правило cat /etc/udev/rules.d/90-myrule.rules SUBSYSTEM==”tty”, ATTRS{idVendor}==”067b”,ATTRS{idProduct}==”2303”,SYMLINK+=”ttyS4” [Linux] Изменение раскладки клавиатуры setxkbmap -option grp:switch, grp:alt_shift_toggle us,ru setxkbmap us,ru -option “grp:ctrl_shift_toggle, grp_led:scroll” [Free BSD] Настройка после установки Настройка и запуск иксов: Xorg -configure -создаст ~/xorg.conf.new cp ~/xorg.conf.new /etc/X11/xorg.conf Определение менеджера окон PATH=/usr/local/kde4/bin:$PATH exports PATH startkde4 $echo “exec startkde”>~/.xinitrc startx Локализация CP1251 Редактируем /etc/login.conf Russian/Russian User Accounts: :charset=CP1251: :lang=ru_RU_CP1251: :tc=default: мышь в KDE str 9 /etc/rc.conf hald_enable=”yes” [Linux] Архивация разархивация tar -cvf foo.tar.gz ./folder -архивация tar -xvf foo.tar.gz -разархивация [Linux] Скорость повтора клавиатуры xset r rate 250 25 - 250 милисек ждать, 25 ск. повтора [Linux][Lazarus] Убрать отладочную информацию strip --strip-all ./project1 [Linux][Squid] Настройка Открыть /etc/squid/squid.conf Вписать: acl allowed_hosts src 192.168.0.0/255.255.0.0 http_access allow allowed_hosts http_port 3128 ЗАПУСТИТЬ: squid -z squid -k shutdown squid d [Linux][Wine] Установка DirectX wget http://www.kegel.com/wine/winetricks sh winetricks d3dx9 [Linux][Squid] Настройка на Ubuntu http_port 192.168.137.1:8080 acl LocalNet src 192.168.137.0/24 http_access allow LocalNet Выполнить sudo squid restart [Linux][Grub] Восстановление sudo grub find /boot/grub/stage1 root(hd0,0) setup(hd0) quit exit sudo gedit /boot/grub/menu.lst добавить строки в файл menu.lst title WindowsXP root (hd0,1) chainloader +1 title SUSELinux root (hd,1,1) kernel /boot/vmlinuz-2.6.34-12-default vga=0x317 initrd /boot/initrd-2.6.34-12-default [Linux][Virtual Box] Запуск VM в отдельной консоли xinit /usr/bin/VirtualBox --startvm “XP” --fullscreen -- /usr/bin/Xorg :1 для ctrl+alt+F8 [Linux][Lazarus] Сборка с GTK2 из исходников gmake clean all LCL_PLATFORM=gtk2 [QT4][QExtSerialPort] Сборка и настройка собрать qmake -unix make .so файлы поместить в /usr/local/lib выполнить ldconfig в PRO файл вписать unix:DEFINES = _TTY_POSIX__ str 10 LIBS += -lqextserialport в заголовок #include “qextserialport.h” port->setBaudrate(BAUD9600); port->setFlowControl(FLOW_OFF); port->setParity(PAR_NONE); port->setDataBits(DATA_8); port->setStopBits(STOP_1); port->setTimeout(0,1); [Delphi] DLL Способ применения implementation ………………………… function foo(Par1:string):retype;stdcall;external ‘DLLNAME.DLL’ name ‘FunctionName’ index FunctIndex; procedure proced(Par1:type);stdcall;external ‘DLL’ name ‘ProcName’ index ProcInedx Исходник DLL: пишем процедуры и функции и добавляем их в exports foo; //function foo();stdcall; ------------------Динамическая загрузка DLL var GetText:function(Lang:Boolean):PChar; //string не использовать ато не работает LibHandle:THandle; Procedure But1Click; begin @getText:=nil;//чистим LibHandle:=LoadLibrary(‘MYDLL.DLL’); if libHandle >= 32 then begin @getText:=GetProcAddress(LibHandle,’GetText’); ShowMessage(StrPas(GetText(true)));end; freelibrary(libhandle); [FireBird] Процедуры begin for запросселект from табл into :переменные,:выходные do suspend; end. Output parameters = структура таблицы Input parameters = входные значения Variables = преременные внутри процедуры [Delphi][TSearchrec] поиск файлов var sr:TSearchRec; found:integer; begin found:=FindFirst(‘path’,faAnyFile, sr); while(found=0) do begin if(sr.name<>’.’) and (sr.name<>’..’) then memo1.lines.add(sr.name); found:=findNext(sr); end; [Linux][SUSE/RedHat] Установка контролера COM портов NetMos Найти существующие порты Линукс поддерживает 4 порта (ttyS0, ttyS1, ttyS2, ttyS3) под обычное подключение. Самые лучшие /dev/ttyS0, /dev/ttyS1 поддерживаются мат.платами, и ttyS2, ttyS3, другими платами. Порты можно проверить следующими командами: setserial /dev/ttyS0 -a если на COM1 установлена мышь - выдаст /dev/ttyS0: Device or resource busy если на порт ничего не подключено выдаст: /dev/ttyS0, line 0, UART:16550A, Port: 0x3f8, irq:4 Baud_base: 115200, clos_delay:50, divisor:0 closing wait: 3000, closing_wait2:infinite Flags:spd_normal skip_test Найти ресурсы PCI карыт (I/O и IRQ) для портов mode /proc/pci или lspci -v получаем результат str 11 Запомнить I/O и IRQ у платы, где vendor id=9719, Device id=9835, сконфигурировать параметры портов setserial /dev/ttyS2 port 0xc000 UART 16550A irq 11 Baud_base 115200 [QT4][SQLITE3] Добавить в pro файл QT+=sql инклудить #include <QSql> QSqlDatabase db = new QSqlDatabase::addDataBase(“QSQLITE”);//типы QDB2, QIBASE, QMYSQL, QODBC, QPSQL, QTDS db.setDataBaseName(“class.db”); QSqlTableModel model; model.setTable(“student”); model.setHeaderData(0,Qt::Horizontal, “id”); model.setHeaderData(1,Qt::Horizontal, “name”); model.setHeaderData(2,Qt::Horizontal, “addr”); model.setFilter(“name LIKE ‘%имя%’); model.select(); ui->tableview->setmodel(model); model.setSort(2,Qt::AscendingOrder); удаление добавление и т.д. подстверждается model.submitAll(); QSqlRecord rec = model.record(0); [QT4] Определение текущей раскладки клавиатуры qApp->keyBoardInputLocale(); [Megafon Modem 1550] Команды для Hyper Terminal AT^U2DIAG=0 (режим только модем) AT^U2DIAG=1 (режим модем+CDROM) AT^U2DIAG=255 (все) AT^U2DIAG=256 (все кроме CDROM) [Linux] Создание swap в файле dd if=/dev/zero of=/swap bs=1024 count=8208 mkswap /swap /bin/sync swapon /swap [Delphi][Indy] Отправка и прием почты for i:=1 to idpop3.checkMessages do begin idpop3.retreive(I,idMessage); for p:=0 to idmessage.Messageparts-1 do if(idmessage.messageParts[p] is TIDAttachment) then begin TIDAttachment(idMessage.MessageParts[p]).SaveToFile(path+TIDAttachment(idmessage.messageparts[p].fileNmae); end; if(idMessage.messageParts[p] is tidtext) then memo1.Lines.addstrings((idmessage.Messageparts[p] as tidtext).Body); далее сохранить и открыть в TWebBrowser отправка: var txt:TIDText; with mess do begin from.text:=’от кого’; receipients.emailaddresses:=e_to.Text; Subject:=’Тема’; ContetnType:=’multipart/mixed’; ContentTransferingEncoding:=’8bit’; end; txt:=tidtext.Create(mess.MessageParts); txt.body.Text:=editor.text;//memo txt.contentType:=’text/html’; txt.charset:=’utf-8’; txt.parentPart:=-1; mess.charset:=’utf-8’; smtp.send(mess); smtp.Disconnect; ПОДКЛЮЧЕНИЕ: idpop3.Host:=’адрес’;smtp.host:=’адрес’; str 12 idpop3.username:=’name’; idpop3.password:=’pass’; [Windows 7] Отключение QOS gpedit.msc -> Конфигурация компьютера-> адм. шаблоны -> Сеть -> Дисп пакетов QOS ограничить резервируемую пропускную способность -> включить и выстаить процент 0 [Linux][Icewm] Настройка DPI В ~/.Xresources написать Xft.dpi: 96.0 Xft.hinting true Xft.hintstyle hintfull Xft.anialias true Xft.tgba rgb xrandr -s 1024x768 [Linux][Xorg] Реконфиг sudo X -configure cp ~/xorg.conf.new /etc/X11/xorg.conf [c++][DLL] Предотвращение искажения имен функций extern “C” { int Func1(); int Func2(int par); } dll.cpp: extern “C” __declspec(dllexport) void __stdcall MyFunction(void) { cout<”Hi From DLL”<<endl; } dll.def: EXPORTS MyFunction testdll.cpp: typedef void (__stdcall *MYPROC)(void); int main(void) { HMODULE hLib=LoadLibrary(“DLL.dll”); MYPROC MyFunction=(MYPROC)GetProcAddress(hLib, “MyFunction”); MyFunction(); } Использование dll: HMODULE hModule = LoadLibrary(“DLL.dll”); typedef int (*PGetSum)(const int, const int); PGetSum pGetSum = (PGetSum)GetProcAddress(hModule, “getSum”); _ASSERT(pGetSum!=NULL); const int res = pGetSum(10,10); Всегда нужно выгружать DLL - FreeLibrary(hModule); [Delphi][DLL]Параметр char* из c++ function Read(var Answer:array of ansichar):Boolean; для передачи параметра нужно инициировать var ch:array[0..255] of ansichar; pch:pansichar; pch:=@ch; _read(pch); str:=pch; [Delphi] Message сообщения объявить функцию procedure my(var b:TMessage);message WM_USER+1; str 13 послать сообщение postmessage(handle,WM_USER+1,nil,nil); [c++ Builder] Message сообщения Компонент TApplicationEvents void __fastcall TMainForm::ApplicationEvents1Message(tagMSG &Msg, bool &handled) { switch(Msg.message) { case WM_USER+1: break; } } [Delphi] Запрет запуска двух копий программы var HM:THandle; function Check:Boolean; begin HM:=OpenMutex(MUTEX_ALL_ACCESS,false,’Proj’); Result:=(HM<>0); if HM=0 then HM:=CreateMutex(nil, false, ‘Proj’); end; begin //проверка на запуске if check then exit; [Linux][Debian/Ubuntu] установка пакета deb dpkg -i ./file.deb [QT4] Socket клиент В pro файл добавить QT += network QTcpSocket client; QHostAddress addr(“192.168.0.1”); client.connectToHost(addr, port); client.write(str, 50); [QT4] Socket сервер В pro файл добавить QT += network QTcpServer server; QTcpSocket *client; //в конструкторе окна connect(&server, SIGNAL(newConnection()), this, SLOT(acceptConnection())); server.listen(QHostAddress::Any, 888); //accept connection функция client=server.nextPendingConnection(); connect(client, SIGNAL(readyRead()), this, SLOT(startRead())); //функция startRead char buffer[1024]; client->read(buffer, client->bytesAviable()); [QT4] Process получение данных QProcess* pr; pr = new QProcess(); pr->start(“команда”); pr-write(“что послать в консоль”); pr->writeForReadyRead(3000); pr->readAll(); [JAVA][ME] Manifest для работы в полный экран на сенсорных устройствах MIDlet-Touch_Support: True UseNativeTextButtons: false str 14 ReverseSoftKeys: true UseNativeCommands: false LGE-MIDlet-TargetLCD-Height: 480 LGE-MIDlet-TargetLCD-Width: 320 [Xors3D] deltaTime составление int time1 = xCatchTimeStamp(); //после xFlip float delta = xGetElapsedTime(time1); [c++ Builder][TCPServer] потоки создать класс class TServerThread:public TServerClientThread { public: __fastcall TServerThread(bool CreateSuspended, TServerClientWinSocket *ASocket): TServerClientThread(CreateSuspended, ASocket){} void __fastcall TServerthread::ClientExecute() { FreeOnTerminate = true; TWinSocketStream *socket; //создать сокет с таймаутом socket = new TWinSocketStream(ClientSocket, 10000); while((!Terminated) && (ClientSocket->Connected)) { if((!Terminated) && (Socket->WaitForData(30000))) { //код работы } } } //unit 1.cpp: void __fastcall TForm1::servGetThread(…) { SocketThread = new TServerThread(True, ClientSocket); SocketThread->Priority=tpLower; SocketThread->Resume(); } [Xors3D] Тени xGraphics3D; xCreateDSS(1024,1024); light=xCreateLight(); xRotateEntity(light,45,0,0); xCameraEnableShadows(cam); xInitShadows(512,0,256); xLightEnableShadows(light,1); xSetShadowParams(4,0.85f,True,300); xLightShadowEpsilons(light,0.0001,0.16); xRenderWorld(True,1); [Linux] Динамические диски 1. ядро должно быть собрано с поддержкой dynamic disc CONFIG_LDM_PARTITION=y 2. Собрать тома: составной linear mdadm --build /dev/md0 -n 2 -l linear /dev/sdb2 /dev/sdc1 mount -t ntfs-3g -o ro /dev/md0 /mnt/linear_volume !!! Порядок следования устройств важен Чередующийся stripe mdadm --build /dev/md2 -n 2 -l stripe -c 64 /dev/sdb4 /dev/sdc3 mount -t ntfs-3g -o ro /dev/md2 /mnt/stripe_volume [c++] перекодировка из Utf8 в Cp1251 (Windows) string Utf8_to_cp1251(const char *str) { str 15 string res; int result_u, result_c; result_u = MultiByteToWideChar(CP_UTF8,0,str,-1,0,0); if(!result_u) return 0; wchar_t *ures=new wchar_t[result_u]; if(!MultiByteToWideChar(CP_UTF8,0str,-1,ures,result_u)) { delete[] ures; return 0 ; } result_c=WideCharToMultiByte(1251,0,ures,-1,0,0,0,0); if(!result_c) { delete[]; return 0; } char *cres=new char[result_c]; if(!WideCharToMultiByte(1251,0,ures,-1,cves,result_c,0,0)) { delete[] cres; return 0; } delete[] ures; res.append(cres); delete[] cres; return res; } [c++] Виртуальные функции Пример для понимания: class Ancestor { public: virtual void function1(){cout<<”Ancestor::function1()”<<endl;} void function2() {cout<<”Ancestor::function2()”<<endl;} }; class Descendant:public Ancestor { public: virtual void function1(){cout<<”Descendant::function1()”<<endl;} void function2(){cout<<”Descendant::function2()”<<endl;} }; Descendant* pointer = new Descendant(); Ancestor* pinter_copy = pointer; pointer->function1(); pointer->function2(); pointer_copy->function1(); pointer_copy->function2(); вывод такой: Descendant::function1() Descendant::function2() Descendant::function1() //потомучто инициировалось от descendant и функция виртуальня Ancestor::function2() //хоть и инициировалось от dencendant но функция не виртуальная! [QT4] QShortcut Работате только в том окне которое вызывает шорткат нюанс - например если в диалоге переопределить escape, то окно отработает только функцию, но окно не закроется #include <QShortcut> QShortcut* key; QString keys(“ctrl+X”); key = new QShortcut(this); key->setKey(QKeySequence(keys)); key->setEnabled(true); str 16 connect(key, SIGNAL(activated()), this,SLOT(on_key())); [Linux] Разбиение и форматирование диска cfdisk /dev/sda - разбить mkfs /dev/sda1 -форматировать [WinApi] Чтение запись файла Handle hFile = CreateFileA(“C:/test.txt”, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING,FILE_ATRIBUTE_NORMAL,NULL); char buf[1024]; DWORD nBytesRead; DWORD bufLen; ReadFile(hFile, buf, bufLen, &nBytesRead, NULL); CloseHandle(hFile); hFile = CreateFileA(“C:/test1.txt”, GENERIC_WRITE,0,NULL,OPEN_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL); WriteFile(hFile,buf,bufLen,&nBytesRead,NULL); CloseHandle(hFile); [Android] программирование в eclipse Создание GUI в редакторе xml в eclipse. При создании элементов интерфейса им присваивается id, которые автоматически генерируются в классе R, в res/layouts Код программы для доступа к элементам интерфейса: import android.widget.*; public class Main extends Activity{ Button but1; } Прослушка событий нажатия мыши import android.widget.*; import android.view.View.OnClickListener; public class Main extends Activity implements OnClickListener{ Button but1; public void onCreate(Bundle savedInstanceState){ but1.setOnClickListener(this); } public void onClick(View v) { if(v==but1);//чтото делаем } } activity означает форму, установка контента этому activity - setContentView(R.layouts.main; присваивание контролов - but1 = (Button)findViewById(R.id.but1); [c#] TCP/IP Сервер using System.Net; using System.Net.Socket; using System.IO; //Main IPAddress localAddress=IPAddress.Parse(“127.0.0.1”); TCPListener listener = new TCPListener(localAddress, 2200); listener.Start(1); while(true){ TcpClient client = listener.AcceptTcpClient();//ждем клиента NetworkStream io = client.GetStream(); StreamWriter sw=newStreamWriter(io); sw.WriteLine(“Hello”); sw.Flush(); client.Close(); } Клиент: TcpClient tcpClient = new TcpClient(“PPP_PEER”,2200); NetworkStream newtworkStream = tcpClient.GetStream(); StreamReader sr=new StreamReader(networkStream); StreamWriter sw = new StreamWriter(networkStream); string sr.ReadLine();//ждем сообщения str 17 [JAVA][SWING] списки и фокус JList - добавление элементов списка void Add(String str){ DefaultListModel md = new DefaultListModel();//import javax.swing.*; for(int i=0;i<list.getModel.getSize();i++) { md.addElement(list.getModel().getElementAt(i)); } md.addElement(str); int last_index=list.getModel().getSize(); list.setModel(md); list.setSelectedIndex(last_index); list.ensureIndexIsVisible(last_index); } Перевести фокус на элемент textbox.requestFocus(); [JAVA][SUSE] Расположение библиотек /usr/lib/jvm/jre/lib/i386 тут лежат *.so [JAVA][RXTX] COM порты Получение списка доступных портов public Vector<String> getPortList(){ Enumeration<CommPortIdentifier> portList; Vector<String> portVect = new Vector<String>(); portList=CommPortIdentifier.getPortIdentifiers(); CommPortIdentifier portId; while(portList.hasMoreElements()){ portId=(CommPortIdentifier)portList.nextElement(); if(portId.getPortType()==CommPortIdentifier.PORT_SERIAL){ portVect.add(portId.getName()); } } return portVect; } void ComPortConnect(String portName){ CommPortIdentifier portIdentifier; try{ portIdentifier=CommPortIdentifier.getPortIdentifier(portName); SerialPort=(SerialPort)portIdentifier.open(“RTBug_network”,2000); serialPort.setSerialPortParams(115200, SerialPort.DataBITS_8, SerialPort.STOP_BITS_1, SerialPort.PARITY_NONE); inputStream=serialPort.getInputStream(); outputStream=serialPort.getOutputStream(); ….. [JAVA][SWING] таймеры ActionListener ar = new ActionListener(){ @override public void actionPerformed(ActionEvent evt){ //код }}; int interval = 100; Timer upd_timer=new Timer(interval, ar); [JAVA] Раскладка клавиатуры t_text.getInputContext().SelectInputMethod(new Locale(“ru”)); InputContext.getInstance().getLocale(); [JAVA] открытие файла для чтения по строкам File file = new File(“path.txt”); BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(file),”UTF-8”)); [JAVA][JTable] Сортировка TableRowSorter<TableModel> sorter = new TableRowSorter(table.getModel()); sorter.setSortable(column, true); table.setSortable(sorter); str 18 [JAVA][JNI] Нужен компилятор например dev-c++ 1. Создаем обычный класс public class JniTest{ static{ system.loadLibrary(“JniTest”); } public native int showString(String message); } 2. компилим javac JniTest.java, получаем JniTest.class 3. javah -classpath . JniTest получаем header для c++ 4. создаем cpp и прописываем код нужной функции return 0; 5. компилим как обычно только к include доб путь из JAVA_HOME 6. Использование класса просто JniTest jt = new JniTest(); jt.showString(“Hello World!!!”); [OGRE] Настройка среды Visual Studio 2010 Выполнить в консоле setx OGRE_HOME %CD% - где папка с огром Создать новый проект Win32 File - new - project, выбрать Empty Project, извлеч Tutorial Framework с шаблоном. Добавить в проект файлы BasicApplication.cpp/h и TutorialApplication.cpp/h. Зайти в project - properties выбрать All Configurations изменить Character Set в Use MultiByte, из General Configuration page. Debuggung Configuration Propertes: Command: $(OGRE_HOME)\Bin\$(Configuration)\$(ProjectName).exe WorkingDirectory: $(OGRE_HOME)\Bin\$(Configuration) Назначить c++ General Include Directories: $(OGRE_HOME)\include\OIS $(OGRE_HOME)\include\OGRE $(OGRE_HOME)\Samples\Common\include $(OGRE_HOME)\boost_1_42 Назначить Linker General Directories: $(OGRE_HOME)\lib\$(Configuration) или $(ConfigurationName)в ранних MSVC++ $(OGRE_HOME)\boost_1_42\lib назначить Build events - post - build events command line copy “$(OutDir)\$(TargetFileName)” “$(OGRE_HOME)\Bin\$(Configuration)” Настройка для Active( Debug) Linker Input: OgreMain_d.lib OIS_d.lib Настройка для Release Linker Input: OgreMain.lib OIS.lib [OGRE] Tutorial-1 В void TutorialApplication::createScene(void) Ogre::Entity* ogreHead = mSceneMgr->CreateEntity(“Head”,”ogrehead.mesh”); Ogre::SceneNode* headNode = mSceneMgr->GetRootSceneNode()->CreateChildSceneNode(); headNode->attachObject(ogreHead); //Set ambient light mSceneMgr->SetAmbientLight(Ogre::ColorValue(0.5,0.5,0.5)); //create a light Ogre::Light* l =mSceneMgr->createLight(“MainLight”); l->setPosition(20,80,50); Для юзанья Entity нльзя напрямую их нужно обязательно прикладывать к SceneNode, и тогда станет возможным изменение положения и т.д. Система координат: headNode3->roll(Ogre::Degree(-90)); Включение DLL библиотек: Во все без исключения библиотек нужно складывать OgreMain.dll и cg.dll , клавиатура и мышь OIS.dll Включение cfg библиотек plugins.cfg resources.cfg - указаны каталоги для сканирования ресурсов ogre.cfg - экран конфигурации OGRE графич установки media.cfg [OGRE] Tutorial-2 Создание камеры str 19 ::CreateCamera(void); mCamera = mSceneMgr->CreateCamera(“PlayerCam”); можно использовать mSceneMgr->getCamera указав ее имя это чтобы не хранить указатели на объекты Позиции и обзор: mCamera->setPosition(Ogre::Vector3(0,10,500)); mCamera->lookAt(Ogre::Vector3(0,0,0)); Отсечение и дальность: mCamera->setNearClipDistance(5); mCamera->setFarClipDistance(10000); Камера контроллер: mCameraMan = new OgreBites::SdkCameraMan(mCamera); Вьюпорты: Ogre::Viewport* vp = mWindow->addViewPort(mCamera); vp->setBackGroundColour(Ogre::ColourValue(0,0,0)); //цвета определяются между 0 и 1 //соотношение сторон mCamera->setAspectRatio(Ogre::Real(vp->getActualWidth()) / Ogre::Real(vp->getActualHeight())); Освещение и тени: OGRE поддерживает 3 типа теней Ogre::SHADOWTYPE_TEXTURE_MODULATIVE - наиболее быстрый SHADOWTYPE_STENCIL_MODULATIVE - не столь точный SHADOWTYPE_STENCIL_ADDITIVE -обрабатывает каждый источник света [OGRE] Tutorial-3 Использование теней: Класс SceneManager имеет метод setShadowTechnique, при создании Entity setCastShadows, бросает ли тень или нет. mSceneMgr->setShadowTechnique(OGRE::SHADOWTYPE_STENCIL_ADDITIVE); Ogre::Entity* entNinja = mSceneMgr->createEntity(“Ninja”,”ninja.mesh”); entNinaja->setCastShadows(true); mSceneMgr->getRootSceneNode()->createChildSceneNode()->attachObject(entNinja); создание плоскости: Ogre::Plane plane(Ogre::Vector3::Unit_Y,0); теперь плоскость нужно зарегистрировать чтобы использовать: Ogre::MeshManager::getSingleton().createPlane(“ground”, Ogre::ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME, plane, 1500,1500,20,20,true,1,5,5,Ogre::Vector3::UNIT_Z); Ogre::Entity* entGround = mSceneMgr->createEntity(“GroundEntity”, “ground”); mSceneMgr->getRootSceneNode()->createChildSceneNode()->attachObject(entGround); Указать чтобы поверхность не бросала теней т.к. она является отображением тени. Материалы: entGround->setMaterialName(“Examples/Rockwall”); entGround->setCastShadows(false); [Android] Создание собственного компонента View //Шаблон всех собственных компонентов public class DrawView extends View { public DrawView(Context context) { super(context); } } //Добавить onDraw protected void onDraw(Canvas canvas) { super.onDraw(canvas); } //пример public class DrawView extends View { private Paint paint; public DrawView(Context context) { super(context); paint = new Paint(); //задаем цвет рисования paint.setColor(Color.GREEN); str 20 // задаем размер шрифта paint.setTextSize(25); // сгладить углы шрифта paint.setAntiAlias(true); } protected void onDraw(Canvas canvas) { super.onDraw(canvas); canvas.drawText("Hello World", 5, 30, paint); // если компонент видно то нужно его отрисовать //в будущем invalidate(); } [Android] Всплывающее сообщение Toast.makeText(this, "Входим", Toast.LENGTH_LONG).show(); str 21