— Плохо без компа…
— Зато узнаёшь, что вокруг есть люди.
— Ну их, они все глючные, причем большинство прямо в прошивке.
— У многих ошибка в генетическом коде, а дизассемблирование считается уголовным преступлением.
— Зато есть особая модификация «девушки» — у них есть смешной разъём!
— o_O
— К ним можно коннектиться. Правда, смешная сетка получается. И нельзя беспроводную замутить.
— А скорость какая?
— А это самое смешное! Там не скорость, а частота. Очень медленно — 0,5 Гц, но в пиковые моменты может вырастать до 2 Гц, а то и выше! Говорят, это веселее, чем пересобирать мир.
— Что-то мне кажется, это дорогие девайсы.
— Не очень-то и дорогие. Хотя тут дело такое — покупаешь задёшево, а содержание обходится в мама-не-горюй. Впрочем, опенсорц-реализации есть, но и там пока не всё гладко.
— А репы не подскажешь?
— Они локальные. Вот в Н-ске есть несколько. Самая быстрая репа — общага мединститута. Но она какая-то завирусованная…
Как выяснилось, сегодня интересная дата. Помимо того, что остался месяц до Нового Года и, соответственно, пора уже к нему начинать готовится, а также помимо первого дня зимы, с которым мне хотелось бы поздравить абсолютно всех своих дорогих читателей, сегодня ещё и небольшой, но знаменательный день.
Обратил внимание на «заметку» о том, что первое декабря оказывается не только первый день зимы, но и день ввода в эксплуатацию украинского национального домена .ua. Сегодня эта дата наступает вот уже семнадцатый раз. Думаю, можно поздравить украинскую часть РУнета с очередным днём рождения =)
Откровенно говоря это оказалось для меня новостью. Сдаётся мне, такое начало зимы предвидит насыщенное её продолжение.
Все знают, что такое YouTube и нередко многие хотели бы что-то скачать с YouTube чтобы, например, скинуть на iPod/мобильник/куда-угодно. Для этих случаев можно воспользоваться специальными сайтами-сервисами, такими как videosaver. Однако, это не всегда удобно, так как надо открывать новую вкладку (а физического места порой не так много), копировать URL ролика или, не дай Бог, только какую-либо его часть, да и найти такой сайт может оказаться не настолько тривиальной задачей. Поэтому, я хотел бы написать сегодня про другой способ: закладурки.
Закладурка (закладка-процедурка) — небольшая JavaScript-программа, оформленная в виде javascript-URL и сохраняемая как браузерная закладка. Часто встречается название — букмарклет от англ. bookmarklet: bookmark — «закладка» и applet. Иногда (совсем редко) также называются «favelets» — от названия закладок в браузере «Internet Explorer» («Favorites»).

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

В простейшем случае можно сказать, что интерполяция — это частный случай апроксимации. Поэтому, прежде всего стоит выяснить, что же всё-таки такое апроксимация?
Апроксимация — операция нахождения неизвестных числовых значений какой-либо величины по известным её значениям и, возможно, числовых значений других величин, связанных с ней.
В эпоху web 2.0 стало модно вносить в сайты полезную интерактивность. Так, например, появился сервис озвучивания русскоязычного контента, который я и решил описать в этой заметке. На самом деле, идея не новая но очень и очень интересная, так как раньше большинство озвучивающих API были спроектированы для англоязычного текста. Тем не менее, сервис «uBot» от Odiogo по заверению авторов работает с учётом специфики русского языка.

Для того, чтобы принять участие в проекте и начать озвучивать свой контент надо всего лишь структурировать его и заключить в формат RSS. Все популярные ныне системы управления сайтами уже имеют всё, что может потребоваться для организации такой структуризации. А для WordPress, например, можно даже сразу после регистрации в сервисе установить специальный плагин, который добавит к каждой записи вашего блога специальную кнопочку удобного прослушивания озвученного контента. Самое интересное, что участие в проекте не требует финансовых вложений! Последнее правда истинно лишь для блогеров, «официальный подтверждаемый годовой доход которых от использования своего блога не превышает 1000 Евро»[1], но не думаю, что таковых это сильно расстроит =)
Массивы существуют в любом современном языке программирования. Массив — это упорядоченная совокупность элементов одного типа, а значит и размера, объединённая одним общим именем. Каждый такой элемент снаружи массива представлен порядковым числом, называемым индексом и доступ к нему осуществляется именно при помощи этого индекса.

Чтобы досконально понять, что такое массив, достаточно провести аналогию со строем солдат. Командующий указывает: «по порядку расcчитайсь!», происходит расчёт и у каждого солдата появляется свой номер (читай, «индекс»), по которому командир может к нему обратится.
Пример: arr[-1] — неверно, arr[10.1] — тоже неверно, arr[11] — верно.
Индексы должны быть представлены целым беззнаковым числом. Любой массив в Си начинается с нулевого элемента.
Внимание! Если мы резервируем память для 12-ти элементов массива, то индекс последнего — 11! Наиболее часто встречающаяся ошибка в программах новичков по моему мнению.
В Си есть жёсткое требование к организации массива: все элементы должны располагаться в памяти по порядку друг возле друга, а имя массива указывает на начало блока памяти, где эти элементы расположены. Любое обращение к элементам массива компилятор в итоге преобразовывает в указатель, т.е. x[i] будет растолковано им как указатель на область x плюс i шагов нужного размера.
Пример: arr[0] == *arr, arr[11] == *(arr + 11 * sizeof(arr)).
Однако, прежде чем начать использовать массив, следует выделить под него нужный объём памяти.

Начиная с последней на сегодня версии интерпретатора PHP 5.3.0 в его стандартную поставку был внедрён новый класс под названием SQLite3. Сама библиотека SQLite обладает большим потенциалом в сфере не очень больших web-разработок, так как имеет сравнительно высокую скорость работы. Несомненным плюсом для таких проектов является и то, что фактически вся база хранится в одном файле, рядом со всеми остальными файлами. Это сказывается как на удобстве портируемости, так и на том, что формально функция защиты базы переносится на файловую систему — как минимум придётся запоминать меньше паролей. Учитывая все эти и многие другие плюсы, а также со взглядом на будущее, когда новая версия интерпретатора PHP будет внедрена на большинстве серверов, я решил написать небольшой урок о том, как работать с базой данных третьей версии формата, а заодно и узнать у более опытных, всё ли правильно я усвоил из документации.
Все подобные уроки, что я видел ранее основываются на работе с встроенными функциями sqlite_*, однако сразу скажу, что они уже давно устарели, ибо для работы используют формат SQLite 2.
Господа программисты, это сообщение целиком и полностью я хотел бы адресовать Вам. И с самого его начала я поставлю вопрос ребром: почему нет русскоязычного ресурса по GTK+? Хотя бы какого-нибудь жалкого форума! Максимум, что я встречал в рунете – какой-нибудь раздел о всём, что связано с GTK на форуме каких-нибудь линуксоидов. И это в то время, как даже такой новичок как Ruby-фреймворк Rails уже давным-давно обзавёлся своим форумом. Каким образом можно расширять пользовательскую базу инструментария GTK+, если новичкам просто негде задать вопрос?! Приведу себя в пример: я без проблем могу читать документацию на английском и пойму весь смысл, который хотел до меня донести её автор, однако сказать что-то на всё том же английском — для меня достаточно проблематичная задача. Почему за столько лет существования GTK+ так и не обрёл русскоязычного ресурса. А ведь по сути GTK+ не сильно-то и хуже Qt (если вообще хуже)!
Да, я понимаю, что сравнивать Qt и GTK+ не совсем граммотное дело, хотя бы потому, что первый — расширение C++, а тема сообщения — чистый C. Но в самом-то деле, ведь не зря же они решают практически одинаковые задачи, а то, что нельзя решить на GTK+, легко решается ещё каким-нибудь инструментом. Пример тому — GTK+ как оболочка для GUI программы и cURL для работы с сетью. И разработчики поступили так не зря! Пускай шведская команда haxx оттачивает cURL, а команда GTK+ займётся в это время улучшением API своего детища. Все в выигрыше и каждый занимается тем, что ему нравится.
Отличная документированность и куча примеров без сомнения большой плюс для Qt, но минусом я считаю то, что это C++ – трудность создания биндингов для других языков – и то, что это KDE, в то время, как самый популярный дистрибутив Linux (Ubuntu) использует GNOME.
Суть этого поста пожалуй уже ясна, но я таки озвучу её. Я бы хотел сделать профильный ресурс по GTK+ (для начала всего лишь форум, а дальше будет видно) и ищу поддержку среди заинтересовавшихся. Мне кажется, такого сайта сильно не хватает рунету. Я предлагаю всем заинтересовавшимся написать в комментариях к этому сообщению то, что Вы думаете по этому поводу. Думаю, если наберётся хотя бы 10 человек готовых развивать такой сайт, то мои страдания не прошли даром. Впрочем, в противном случае думаю тоже можно сделать правильные выводы, ведь если у GTK+ не наберётся и 10 поклонников, значит профессионалы действительно не заинтересованы в его развитии.
Хочу приподнести моим дорогим читетятелям очередной подарок. За эту работу на free-lance.ru, кажется, просили не менее $100, а о качестве в то же время не было и слова. В общем, не знаю, кому и зачем это надо, но задание показалось мне достаточно интересным, чтобы я выполнил его бесплатно, хоть и прошло довольно много времени. Впрочем, об этом Вы узнаёте первыми и о полезности обработанной мной информации судить скорее всего тоже только Вам.

После реформации сайта Gismeteo (сайта погоды) на нём изменились ID городов, а так как по этим ID работает невероятно большое число программ (к примеру, плагин погоды в Miranda под Windows), думаю, я сдалал всё-таки важное дело. Я получил список в формате «Название_города;Старый_ID;Новый_ID», а уж его-то можно без труда привести к любому виду. Так как база была составлена на основе давным-давно полученного полуофициальным путём списка городов со старыми ID (они тогда ещё были актуальны), то в ней сейчас более 4500 городов (подозреваю, что после реформации их могло стать и больше). Мне надо было лишь немного поопрашивать сайт Gismeteo, чтоб он вернул мне новые ID вместо старых. Для 5 городов, кстати говоря, новых идентификаторов Gismeteo не определил — похоже на то, что для них теперь погода вообще не предоставляется.
Встала задача: отличить GET-запросы к серверу Apache от POST и в зависимости от результата перенаправить на нужную страницу.

Для тех, кто только начинает разбираться в web-разработке, объясню разницу. Интерактивность страниц — одна из основополагающих частей современного интернета, эту самую интерактивность нам обеспечивает обмен данными между пользователем и web-страницей. Разработчики протокола HTTP много лет назад позаботились о том, чтобы существовало несколько способов передачи информации. Так вот, разница между POST и GET элементарна: при GET-запросе мы видим то, что ввели ранее в строке заголовка, а POST предусматривает скрытую передачу этой информации, так что как правило для логина на большинстве сайтов вполне логично используется именно POST.
Если говорить о случаях, когда может понадобится различать эти 2 типа, то это, например, желание заблокировать GET-доступ к странице в пользу POST. Такое блокирование используется в XML-RPC. В некоторых случаях при разграничивании POST и GET, думаю, даже можно снять некоторую нагрузку с сервера.