Archive for December, 2006

Скакунов Александр

Проапдейтить Blogger

Поддался на уговоры и наконец проапдейтил свой блог. Я был морально готов к глюкам, так что в целом я доволен.

Минусы (сразу стали видны они):

  • похерились мои интерфейсные надписи на русском - всё вроде бы утф8, а нет, закрокозяблило…
  • вообще всё, что было нажито непосильным трудом (настройки темплейта), чуть было не пропало - хорошо, что я сделал бэкап. CSS, набор ссылок на интересные сайты и прочий хлам никак не вписывался в новый стандартный темплейт.

Плюсы:

  • они добавили прикольную штуку - кроме прямого редактирования темплейта прикрутили редактирование виджетов. Теперь в сайд-бар можно вставить картинку, картонку и маленькую собачонку фид, просто какой-то HTML+JavaScript. Короче, визуальное редактирование мне понравилось.

Интерфейс редактирования виджетов

  • общий вид тоже стал настраиваемым - т.е. теперь можно двигать блоки “дата поста”, “комменты” итд. Удобно.
  • после небольшой правки CSS (просто вставил нужный кусок из бэкапа) сайт стал выглядеть так же, как и раньше.
  • прочие мелочи - например, на странице, появляющейся после публикации нового поста, появились 2 удобные ссылки “Edit this post” и “Create new post” (раньше надо было погонять по меню ради этого).

Ну в общем я пока доволен.

Скакунов Александр

Жрёт ли PHP память

Спорим с коллегами по поводу того, как и сколько PHP жрёт памяти.

Две ветки спора:

  1. отличается ли подключение библиотек через include и require;
  2. съедается ли сразу память под все имеющиеся в библиотеках функции либо по вызову.

Пока ссылок на ман никто не привёл, поэтому я решил сделать пару тестов.

Повырубал ненужные библиотеки (почти все), и апач стал в памяти меньше
на 42 байта ;]

Поэтому придумал другой тест.

Как тестил:

- запускал апач и записывал кол-во занятой им памяти;
- обновлял страницу в броузере и в процессе снимал показания памяти;
- закрывал апач.

Тест №1.

<?
$var = str_repeat(”asdf”, 123456789);
?>

Было : 11 980
Пик  : 25 500
Стало: 13 436

Тест №2.

<?
function f1()
{
$var = str_repeat(”asdf”, 123456789);
}
?>

Было : 11 980
Пик  : 13 476
Стало: 13 476
Смею сделать вывод, что просто лежащие в библиотеках функции только “индексируются”, но память сразу под них не выделяется (косвенный признак: пока функцию не вызовешь - PHP не скажет, есть ли в ней ошибки).

А вы что скажете?

Скакунов Александр

utf8 в PHP

Странно, но текстовые функции PHP не умеют работать с юникодовой кодировкой. Поэтому, когда надо, скажем, тотально поменять регистр куче строк, приходится юзать базу данных. Например, генерить такой запрос и использовать результат:

SELECT LOWER( 'вася ПУПКИН' )
UNION
SELECT LOWER( 'пупкин ВАСЯ' )
UNION
SELECT LOWER( 'пупкин ВАСИЛИЙ' )

Есть более человеческие варианты?

Скакунов Александр

Пара вакансий

1. Программист в windows среде

Языки: ASM, C, C++, C#, Pascal, PL/SQL

Инструменты:

  • Владение средствами разработки Visual Studio, линейкой продуктов Borland.
  • Базы данных Oracle, MsSQL Server, MySQL

Технологии и библиотеки:

  • Доскональное знание Windows API, SDK.
  • Владения быстрыми алгоритмами обработки данных.
  • Анализ машинного кода/дампа программы.
  • Умение работать с SoftICE.
  • Обязательно знание протоколов TCP, UDP.
  • Программирование TCP/IP на низком уровне (NDIS).
  • Четкое понимание способов управления потоками данных в windows.
  • Расширенное знание и умение применить алгоритмы шифрования данных/кода.
  • Расширенное знание структуры исполняемых файлов.
  • Расширенное понятие сигнатуры кода. Умение ее находить и анализировать.
  • Знание серверной платформы Windows.
  • Операционные системы: Windows 95/98/NT/2000/2003/ХР, + all SP

2. Программист в *nix (Unix, Linux, Free BSD, etc.)

Языки: ASM, C, C++, Perl, PL/SQL

Инструменты:

  • Владение средствами разработки для *nix, линейка продуктов Borland (Kylix).
  • Базы данных Oracle, Mysql

Технологии и библиотеки:

  • Доскональное знание ОС Linux/FreeBSD (ELF файлы, системная fs), программирование kernel (syscall, перегрузка вызовов, пересборка измененного ядра) и служб.
  • Владения быстрыми алгоритмами обработки данных.
  • Анализ машинного кода/дампа программы.
  • Умение работать с gdb.
  • Обязательно знание протоколов TCP, UDP
  • Программирование TCP/IP на низком уровне (формирование пакетов)
  • Четкое понимание способов управления потоками данных в *nix.
  • Расширенное знание и умение применить алгоритмы шифрования данных/кода
  • Расширенное знание структуры исполняемых файлов
  • Расширенное понятие сигнатуры кода. Умение ее находить и анализировать.

Операционные системы: *nix, FreeBSD, OpenBSD, Debian



Немного о компании: это IT-компания, которая занимается разработкой антивирусного программного обеспечения и защитой компьютерных сетей. На данный момент она набирает группу разработчиков (3 человека), которые будут работать над новыми крупными проектами. Изначально компания была открыта в России, но вот уже несколько лет есть филиал и в Киеве. Человек принимается официально и стабильно выплачивается з\п в начале месяца. Так же предусмотрены и премии.

Скакунов Александр

Изобрел ли Google цепочки писем

Waiting for possibilities - and don’t see too many around.
Queen

Читаю пиар блог российского Гугла:

Цепочки писем: Gmail приучил меня к тому, что все письма в моей почте связаны между собой — в логически обоснованные цепочки.

и вот что меня удивило: цепочки писем - вещь очень старая. Я уже фиг-знает-сколько лет пользуюсь TheBat 1.6, и там всё время была эта функциональность. Конечно, не так красиво оформленная  и не рекламируемая как супер-фича, просто видно цепочки есть в стандарте формата электронной почты, и нормальные клиенты просто реализовали этот стандарт.

Но чувствуете разницу: как это реализовали все - и как это реализовал Гугл?

Скакунов Александр

IAI

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

 Обсуждение

Скакунов Александр

Пиявка

Сегодня пришла SMS от UMC, мол, хочешь получать прогноз погоды по своему городу - отправь сообщение на номер такой-то с кодом своего города.

Прогноз, конечно, мне не нужен, меня поразила следующая мысль: я, как девелопер такой SMS-системы, наверняка потратил бы немало времени на выбор оптимального PRIMARY KEY, т.е. идентификатора для каждого украинского города - это могла быть строка типа “Sevastopol”, могли быть 2-3 первые буквы в верхнем регистре или просто какой-то порядковый номер. У строковых ID есть тот минус, что украинцы и русские будут писать названия городов по-разному (тот же Киев/Kiiв), а сокращения или порядковые номера нужно где-то брать, т.е. товарищи клиенты должны будут сделать ещё один шаг перед уплатой мне денег за сервис, что не юзабельно.

И вот бравые UMCшные синоптики поступили очень грамотно: взяли идентификаторы из другой системы - телефонной. Телефонисты уже обо всём позабитились, каждому городу присвоили уникальные коды.

Вывод: не ограничиваться своей предметной областью для решения задачи.

P.S. Интересно, если бы UMC была не телефонной компанией, догадались бы синоптики до такого ответа?

Скакунов Александр

Покупайте наши маны!

Читаю электронный мануал по экзамену по PHP, и уже в первой части нашёл багу: говорят о трёх тагах, а приводят четыре.

Ошибка в мануале

Хорошо, что я бумажный ман не купил.

Скакунов Александр

ебандейское ООП в PHP

Блин, убил несколько часов, чтобы выяснить простой факт: в PHP при инстанцировании подкласса автоматом не вызывается конструктор суперкласса…

Вот блин, придётся вручную…

Скакунов Александр

ComboBox на HTML

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

Чего, однако, явно не хватает веб-страницам, так это ComboBox - стандартного списка, который позволяет не только выбирать одно из имеющихся значений, но и писать в строке ввода текст с тем, чтобы автоматом выбралась похожая запись. Оно есть в винде, всем им пользуются, например, при вводе имени файла в стандартном диалоге.

ComboBox при вводе имени файла

Конечно, любой JavaScript-фреймворк имеет такой контрол, но все они какие-то недоделанные - раз, часто ведут себя по-разному в различных броузерах - два, не пашут без включённого JavaScript - три.

Тем не менее, самый, на мой взгляд близкий к виндовому вариант (что означает привычность использования - один из постулатов юзабилити) находится здесь, но в ИЕ немного колбасит низлежащий текст. Что поразило - ну очень похоже на то, как оно должно быть, я даже полез смотреть код, чтобы убедиться, что это на JS сделано, а не впаяли как-то новый контрол прямо в броузер :)

Знает кто действительно классную реализацию, чтобы вообще без нареканий?

Next »