Изобретаем велосипед: форма слова в зависимости от числа

Posted in Разное with tags on 13 Май 2008 by theifish

Понадобилось недавно выводить “очеловеченный” текст, чтобы не было казусов вроде: “У вас есть 1 непрочитанных сообщений”. Поверхностый поиск в Google не дал быстрого результата, поэтому я решил, что иногда быстрее самому сделать велосипед, тем более такой маленький. Вот что получилось:

function rus_wordform($var, $form1, $form2, $form3) {
$lastnum = $var%100;
if ($lastnum>4 && $lastnum<21) {
echo $form3;
} else {
$lastnum = $var%10;
if ($lastnum == 1) {
echo $form1;
} elseif ($lastnum>1 && $lastnum<5) {
echo $form2;
} else {
echo $form3;
}
}
}

$var - это соответсвенно само число,
$form1 - это первая форма слова (например: сообщение),
$form2 - это вторая форма слова (например: сообщения),
$form3 - это третья форма слова (например: сообщений).

Соответственно,

$i = 53;
echo “У вас есть $i нов”.rus_wordform($i, ‘ое’, ‘ых’, ‘ых’);.” сообщени”.rus_wordform($i, ‘е’, ‘я’, ‘й’);

выдаст:

У вас есть 53 новых сообщения

Firefox 3: мои любимые плагины

Posted in firefox with tags on 13 Май 2008 by theifish

После обновления до Ubuntu 8.04 продолжаю тюнинговать систему. Итак, мой FF теперь выглядит так:

Максимум полезного визуального места и удобства. Этого удалось добиться с помощью таких плагинов:

1. Compact menu - позволяет уменьшить тулбар с меню до одной кнопки. Поскольку я все равно очень редко пользуюсь пунктами меню, то одна кнопка - самое им место;

2. Download statusbar. Ну не нравится мне это нативное окно закачек, а Download statusbar в режиме compact - это самое то;

3. Basics - добавляет кнопку “Открыть новый таб” справа от панели табов. Мелочь, а удобно;

4. Menu editor -  позволит убрать кучу ненужных пунктов из контекстного меню. Особенно приятно убрать “Открыть в новом окне”;

5. Adblock plus. Вроде и интернет безлимитный и трафика не жалко, а все равно не хочется смотреть надоедливую рекламу;

6. Taboo. Очень много нужно прочитать, а зачастую некогда. И чтобы не использовать “Избранное” (ну не нравится оно мне) и не держать открытыми кучу табов и используется Taboo. Добавляется две кнопки на панель: “save this tab to read later” и “view your Taboos”, которая сортирует и показывает превью запомненных ссылок. Просто и удобно;

7. Littlefox. Ну очень минималистичная тема.

Как убрать иконки типа server connections с рабочего стола Ubuntu

Posted in Tips with tags , , on 4 Май 2008 by theifish

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

В предыдущей версии меня вводило в уныние наличие огромного количества иконок типа “server connections” (создается когда делаешь “Соединиться с сервером”) на рабочем столе, но, хотения их убрать у меня не оказывалось. Теперь, я все-таки нашел силы и выснил, что это сделать было абсолютно просто:

1. Запускаем gconf-editor

2. Затем в apps/nautilus/desktop убираем галку с volumes_visible

И все, это позволит избавиться от непонятного дублирования малоиспользуемых ссылок.

Profetsional searching for the work

Posted in Разное with tags , on 25 Март 2008 by theifish

Последнее время приходится просматривать резюме на должность программиста в компанию. По моим подсчетам, примерно 5% соискателей составили более-менее приличное резюме. Мне кажется, должно быть вполне очевидно для каждого специалиста (или считающего себя таковым), что резюме - это “одежка”, по которой встречают. Неряшливо или неграмотно составленные резюме так и просятся в помойку, и сразу настраивают работодателя на предвзятое и совсем не положительное отношение. Если человеку сложно набрать в Google запрос “как составить резюме“, а затем, грамотно составленное резюме проверить в редакторе со спелчекером, то грош цена такому неаккуратному специалисту.

Итак, избитые истины:

  • Составляйте структурированное резюме. Найдите шаблон в Google, ну или составьте резюме на Хедхантере, а потом скопируйте;
  • Не составляйте резюме на языке, который вы не знаете. Резюме на плохом английском не делает вас круче, а лишь веселит работодателя;
  • Проверяйте резюме на наличие элементарных грамматических и синтаксических ошибок. Прогнать текст спелчекером - что может быть проще и эффективней;
  • Не надо писать все языки программирования на которых вам удалось создать программу типа “Hello world”. Слабо верится, что человек может быть отличным спецом как в C, так и в PHP.

Удачи!

Мои программы #2. Мультимедиа

Posted in Ubuntu with tags , , , , on 24 Март 2008 by theifish

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

Первое, что нужно сделать после установки Ubuntu, если не хотите чувствовать себя ущербным- надо установить Ubuntu restricted extras. Это позволит вам проигрывать mp3 и mpeg без всяких проблем в стандартных гномовоских программах. Понятно, что Canonical очень переживает за чистоту дистрибутива и все такое, но могли бы,  во время установки при указании в качестве локации “Россия” или “Китай”, устанавливать этот пакет сразу. Далее »

Где этот чертов курсор? Работа с курсором в Javascript

Posted in Javascript with tags , , on 24 Март 2008 by theifish

В разработке текущего проекта потребовалось производить некие манипуляции с текстовым полем на стороне клиента:

  • определение текущей позиции курсора
  • определение выделенного фрагмента
  • установка / снятие выделенного фрагмента
  • изменение позиции курсора

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

Далее »

PHP Wiki - шаг в правильном направлении

Posted in Разное on 16 Март 2008 by theifish

Как я обнаружил, команда PHP создали wiki. И хотя там сейчас не густо, я очень надеюсь, что эта wiki будет пополняться с завидной регулярностью. Наиболее интересны, на мой взгляд, там разделы RFC, TODO и QA.
173984304

Уходим с честью - register_shutdown_function в PHP

Posted in PHP with tags , on 16 Март 2008 by theifish

Иногда приходится по тем или иным причинам завершать скрипт, но это не всегда выглядит красиво. Не очень то хочется показывать пользователю информацию о фатальной ошибке или черный экран(когда отключен показ ошибок). В PHP есть функция register_shutdown_function, позволяющая установить функцию, которая будет вызвана при завершении выполнения скрипта. Это значит, что указанная функция будет запущена когда наш скрипт удачно завершит выполнение или аварийно закончится. Добавив переменную, которая в самом начале выполнения скрипта будет установлена в false, а в самом конце в true, мы сможем проверить был ли скрипт завершен удачно или произошло аварийное заврешение. Здесь приведен очень простой пример, который показывает как вы сможете сообщить пользователю о произошедшей фатальной ошибке. Также необходимо отключить сообщения об ошибках, чтобы все это выглядело прилично.

<?php
$clean = false;
function shutdown_func(){
global $clean;
if (!$clean){
die(”not a clean shutdown”);
}
}

register_shutdown_function(’shutdown_func’);

$a = 1;
$a = new FooClass(); // will fail with fatal

$clean = true;
?>

Как видно из скрипта, shutdown_func будет выводить текст только если переменная $clean равна false, то есть при ошибке.

Нашел здесь: http://eirikhoem.wordpress.com/2008/03/15/dying-with-grace-phps-register_shutdown_function/

Мои программы #1. Интернет

Posted in Ubuntu with tags , , , , , , on 15 Март 2008 by theifish

Сегодня обнаружил что наконец-то зарелизился Skype 2.0 для Linux. Я до этого пользовался бетой, потому что во втором Skype, в отличие от первого, есть видео, а оно иногда надо.

После обновления, пришло в голову,  что неплохо было бы иметь список программ, которые в Ubuntu не ставятся “из коробки”, а то и вовсе их там нет, но крайне нужны в работе. Тем более скоро намечается Hardy Heron, и, возможно, под это апгрейд железа с последующей переустановкой.

Итак, раздел #1: Интернет

Далее »

Запуск Firefox 3 и Firefox 2 одновременно

Posted in Ubuntu with tags , on 12 Март 2008 by theifish

Проклятая Opera 9.50b уже просто утомила последнее время своими глюками и рандомным самоуничтожением. К сожалению, я не мог использовать Firefox как основной браузер, посколько, в силу специфики моей работы, он обвешан плагинами по самое не хочу (Firebug, HTMLValidator, Web developer) и именно по этой причине представляет собой неповоротливого и громоздкого Франкенштейна.

В свете победного выхода Firefox 3 Beta 4, я решился все-таки изменить ситуацию. Я скачал и установил новый Firefox 3. Чтобы заставить одновременно работать Firefox 2 и 3 (один для работы, другой для браузинга), пришлось сделать следующее:

0. Скачиваем и распоковываем Firefox 3 Beta 4 в ~/APPS/firefox или в любую другую папку

1. Создаем два ярлыка на рабочем столе:

- Firefox 3: /home/ifish/APPS/firefox/firefox3 -P “firefox3″ -no-remote

- Firefox 2: firefox -P “default” -no-remote

Объясню, ключ -P обозначает профиль Firefox (должны быть разные), -no-remote позваляет запускать одновременно несколько версий Firefox (иначе будет открыто еще одно окно запущенной программы)

2. В Пуск->Система->Параметры->Предпочитаемые приложения для Веб-браузера выставляем “Другой” и “Команда”: ~/APPS/firefox/firefox -P “firefox3″ -new-tab “%s”. Это чтобы новые вкладки открывались в Firefox 3 а не в 2

Все, теперь можно работать и там и там.  ПОКА ОПЕРА :-)