Новости проекта и другие мои заметки


Обычно я собираю Qt4 из исходов, чтобы гарантировать работу с OpenSSL (т.е. Qt по умолчанию не слинкован с OpenSSL), а также поддержку Ubuntu 10.04+ путем сборки либ под gcc-4.4.3

Последняя версия Qt4 - 4.8.7, забрать ее можно отсюда

Установка зависимостей

sudo apt install libfontconfig1-dev libfreetype6-dev libx11-dev libxcursor-dev libxext-dev libxfixes-dev libxft-dev libxi-dev libxrandr-dev libxrender-dev libssl-dev libdbus-1-dev

Сборка и установка

Необходимо распаковать архив, например, в домашнюю папку, перейти туда и сконфигурировать. Лично я использую следующие параметры, в которых модуль QtNetwork будет уже слинкован с OpenSSL, который из-за BSD лицензии не может сразу поставляться вместе с либами Qt под LGPL. Поэтому из коробки у вас не заработает https, пока вы с ней не слинкуетесь.

./configure -fast -nomake demos -nomake examples -no-libtiff -no-libmng -qt-libjpeg -qt-libpng -qt-zlib -openssl-linked -no-qt3support -opensource -no-accessibility -no-stl -no-declarative-debug -no-opengl -no-svg -confirm-license

После этого запустить саму сборку (примерно на часик) и затем установить в систему

make -j
sudo make install

Кстати, можно собирать Qt и статически с ключом -static, чтобы на выходе получался цельный бинарь, без динамически подгружаемых библиотек, однако если в вашем приложение используется Webkit, то сделать это не удастся, тк он не умеет собираться статически =(

Подробнее




Представим, что нам вдруг понадобился еще один столбец в таблице. Что ж, это просто:

ALTER TABLE table ADD newfield VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL;

Но когда речь идет о большом количестве записей в таблице, то этот запрос может работать крайне долго. Для этого можно попробовать создать рядом таблицу с такой же структурой, добавить туда необходимый столбец, затем сделать дамп предыдущей таблицы, удалить ее, переименовать таблицу с новой структурой на старое название и восстановить из дампа все данные.

CREATE TABLE table1 LIKE table;
ALTER TABLE table1 ADD newfield VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL;
mysqldump -c --no-create-info --skip-extended-insert --no-create-db -uroot -p database table > table.sql
DROP TABLE table;
RENAME TABLE table1 TO table;
mysql -uroot -p database < table.sql

Выходит очень даже бодро.

Подробнее




Значится понадобилось мне тут взять и получить все коды смайлов, которые используются ВКонтакте, чтобы в будущем встроить их в свой мессенджер и уметь различать их.

Откуда берем:

Ну можно например из мини-диалогов в самом вконтактике. Берем в firefox нажимаем правой кнопкой миши на смайлик и с помощью инструментов для разработчика выбираем пункт "Исследовать элемент".

Далее копируем длинную портяну кода вида

<a class="emoji_smile_cont" onclick="return cancelEvent(event);" onmousedown="Emoji.addEmoji(Emoji.shownId, 'D83DDD30', this); return cancelEvent(event);" onmouseover="return Emoji.emojiOver(2, this);">

 

Таких строчек у нас примерно будет 528 штук. Сохраним их в файл emoji.txt. Задача заключается в том, как быстро вытянуть utf-16 коды символов, используемых для смайлов по адресу http://vk.com/images/emoji/<код смайла>.png

Подробнее




Вот прямо руки чешутся написать про это, а точнее высказать свое негодование.

Представьте, что вам вдруг во время программирования яблокодевайса понадобилось указать какой-либо цвет (ну там подхайлайтить что-то), то вы, определившись с цветом с помощью пипетки или на глаз (ну там ВЫРВИГЛАЗНОЖЕЛТЫЙ) пытаетесь создать объект класса UIColor. И тут начинается ступор. Я конечно понимаю, что компания Apple еще те извращенцы пытается быть не как все, но чтобы извратиться и придумать конструктор от объекта UIColor в виде покомпонентно разложенных каналов, причем не от нуля до 0xff (да-да, я чуть не охренел от эротической фантазии того, кто это придумал), — а от дробного числа в  интервале [0..1]!!!!

Блин, ну ребята, задавать цвет в rgb hex формате - это стандарт, который используется ну просто везде, начиная с самых древнейших версий HTML, CSS, Qt и так далее. Даже в андроиде не поленились написать метод Color.parseColor. Максимум, где я встретил такую нотацию - это при создании цвета в OpenGL. Т.е. примерно у каждого ui-разработчика есть представление в голове, что вот, противно- приятно-голубой цвет, который используется просто повсюду - это #0099cc, оранжевый - это наоборот надо поменять местами каналы, и так далее. И тут у тебя начинается разрыв мозга, как привычный цвет в голове быстренько перевести в систему счисления от нуля до единицы?)) не, ну я конечно заметил, что разработчики ПРОВЕЛИ ИССЛЕДОВАНИЯ и заметили, что 50 оттенков серого настолько популярны, что они сделали специальный конструктор для этого - colorWithWhite:alpha:

В общем все грустно, я не пытаюсь сейчас показать какое-то изящество в написании говнокода, но я так понял, что этот метод должен присутствовать в каждом проекте:

Подробнее




Представим, что мы хотим получать смску в определенное время каждый день, причем, где бы мы не находились) Конечно же, можно тупо поставить обычный будильник на телефон, но вся прелесть в том, что можно передавать какие-нибудь данные, которые периодически изменяются, например, курсы валют, погоду или какие-то свои технические данные с сервера. Для этого нам поможет сервис LittleSMS с открытым API, вся прелесть которого сводится к копеечным ценам за отправку смс (например, на номера российских операторов 0,5-0,9 рублей). Вам остается зарегистрироваться и получить ключ апи, для теста будет предложено несколько бесплатных смс.

Ну и сам код скрипта на bash

Подробнее




Бывает, что настает такой момент, когда мы начинаем понимать, что нам не хватает ограничений, наложенных виртуальным хостингом, и, наконец, собравшись духом, мы приобретаем выделенных виртуальный сервер на Linux, на котором, хм, кроме ssh-доступа на данный момент нет ничего. В этой статье я ничего не расскажу нового или сверхестественного, я ее просто помечу для себя, чтобы быстро настраивать очередной сервер, на случай переезда (предыдущий кстати очень дико тормозил, отвечал 2-3 секунды после запроса, частенько заканчивалась память сама по себе, либо он лежал). Кстати один раз они (2servers.ru) потеряли все данные на диске просто так и дико извинялись, благо я делал недавно бекап, так что обошлось.

Что ж, смелее, приступим. Речь пойдет про выделенный сервер на основе Ubuntu 12.04 LTS.

Подробнее




Бывает такое очень страшное желание выкачать весь сайт целиком (с картинками, скриптами, шаблонами и так далее). Не буду признаваться зачем, просто оставлю это здесь:

site="http://cleancanvas.herokuapp.com/";
domain="cleancanvas.herokuapp.com";
wget --recursive --no-clobber --page-requisites --html-extension --convert-links --restrict-file-names=windows --domains $domain  --no-parent $site
Подробнее




Я же ведь говорил, что буду писать всякие очевидные или не очень вещи, скорее даже в первую очередь для себя, чтобы не забыть и не искать снова уже знакомое решение.

Так вот, проблема заключается в следующем: как без установки фотошопа и без запуска gimp легко и просто массово изменить размеры всех изображений, находящихся в папке в линукс, используя лишь консоль?

Для начала поставим пакет imagemagick

$ sudo apt-get install imagemagick

Ну и собственно сам скриптец:

for file in *.png; do
	convert $file -resize 65x59 $file;
done

Так же мы можем распараллелить сам процесс конвертации, если у нас несколько процессоров:

procs=`cat /proc/cpuinfo | grep processor -c`;

for file in *.jpg; do
	echo "converting $file...";
	while [ `ps -e | grep convert -c` -ge $procs ] ; do
		sleep 1s;
	done;
	convert $file -resize 33% $file &
done;

Доне.

Подробнее




Ура! Наконец-то случилось полное обновление официального сайта Bingo's Soft! Теперь-то он стал гораздо лаконичнее, понятнее, да и выглядеть гораздо приличнее и минималистично, одновременно хорошо отображаясь на мобильных устройствах! Ща какую-нибудь картинку добавим из завалявшихся архивов для пестроты самой новости:

Bingo's Soft

Насколько вы помните, а может вы находитесь впервые на моем сайте, но не важно, суть остается прежней - здесь я выкладываю свои разработки, актуальные версии  своих программ и описания для них, иногда я буду писать интересные или не очень новости о новых релизах или мои околопогромиздсцкие заметки

Подробнее