Pull to refresh
8
0
crazyprog @crazyprog

User

Send message

Положительная и отрицательная мотивация

Reading time4 min
Views11K
Представим себе любой небольшой бизнес, оказывающий профессиональные услуги (например, веб-студию).

Есть выручка, есть расходы, есть зарплаты. Руководитель должен принять решение о том, как он будет платить зарплату.

Цели

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

Будем называть это все простым словом эффективность.

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

Эта заметка посвящена одному вопросу: есть ли место в небольших организациях отрицательной мотивации как существенном способу повышения общей эффективности?
Читать дальше →

Начало научной карьеры (часть 3)

Reading time4 min
Views8.5K
Разобравшись с высшим образованием в виде бакалавриата и магистратуры, можно перейти к первому шагу на пути к настоящей научной карьере — к поступлению в аспирантуру.

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

В России аспирантуру нередко рассматривают как своего рода «совсем высшее» образование, иметь которое престижно, но которое автоматически не наделяет человека статусом учёного. Соответственно, далеко не все закончившие российскую аспирантуру люди идут в университеты. Весьма немало выпускников уходит в фирмы или ещё куда-нибудь за пределы лабораторий.

На Западе для трудоустройства «в миру» практически всегда достаточно бакалаврского, максимум, магистерского образования. Законченная аспирантура требуется исключительно в научной карьере (либо в тех редких случаях, когда частная фирма реально занимается какой-либо исследовательской деятельностью).
Читать дальше →

jQuery в Eclipse PDT, WTP/ Zend Studio for Eclipse

Reading time1 min
Views3.4K
Захотелось мне тут для JavaScript perspective в любимом Eclipse заиметь автодополнение функций для jQuery с наличием полной документации. Порыскав в сети, нашёл только jQueryWTP, который даже ставить не хотелось из-за негативных отзывов, и устаревшей версии.
Потому пришлось сделать самостоятельно, и вот результат:

Требования: Eclipse, Web Tools Platform / Zend Studio for Eclipse / Любой редактор с поддержкой JSDoc

P.S. Конечно, есть и другие методы подключения jQuery, например использование NetBeans или плагина Aptana. Так уж получилось, что был выбран именно этот метод :)

хочу!

Проверка файла на наличие / существование

Reading time2 min
Views88K
Порой мы отображаем на сайтах контент с других ресурсов: картинки или фавиконы. Некоторе браузеры просто оставят пустое место (Firefox), другие же отобразят уродский прямоугольник, явно указывая, что чего-то не хватает (IE). Как же можно средствами PHP проверить существование файла.

Есть функция file_exists(), но она хороша только для файлов в пределах нашей файловой системы, а с удаленным сервером не пройдет.

Есть вариант открывать файл на чтение и в случие ошибки констатировать факт, что файла не существует:
<?
// файл, который мы проверяем
$url = "http://url.to/favicon.ico";

// пробуем открыть файл для чтения
if (@fopen($url, "r")) {
echo "Файл существует";
} else {
echo "Файл не найден";
}
?>


Однако такой прием занимает достаточно много времени.

Есть вариант еще лучше — использовать функцию get_headers():
она делает запрос к файлу и получает все заголовки с ответом примерно в таком массиве
Array
(
[0] => HTTP/1.1 200 OK
[1] => Date: Sat, 29 May 2004 12:28:13 GMT
[2] => Server: Apache/1.3.27 (Unix) (Red-Hat/Linux)
[3] => Last-Modified: Wed, 08 Jan 2003 23:11:55 GMT
[4] => ETag: "3f80f-1b6-3e1cb03b"
[5] => Accept-Ranges: bytes
[6] => Content-Length: 438
[7] => Connection: close
[8] => Content-Type: text/html
)


Как мы видим, в нулевом элементе есть код ответа, 200 значит, что файл существует, и мы спокойно можем получить к нему доступ.
Вот код, который проверит существование файла.

<?
// файл, который мы проверяем
$url = "http://url.to/favicon.ico";
$Headers = @get_headers($url);
// проверяем ли ответ от сервера с кодом 200 - ОК
//if(preg_match("|200|", $Headers[0])) { // - немного дольше :)
if(strpos('200', $Headers[0])) {
echo "Файл существует";
} else {
echo "Файл не найден";
}
?>


Теперь сравним по времени два метода с существующей favicon и с несуществующей:
при несуществующем файле второй метод (get_headers) выигрывает на две сотые секунды.
при существующем файле оба метода показали примерно одинаковое время.

Начало научной карьеры (часть 2)

Reading time5 min
Views6.7K
Вторая часть «Начала» будет посвящена тому, как можно «влиться» в структуру зарубежного университета на уровне бакалаврской или магистерской программы.

Перед тем, как приступить к основному блоку, хочу немного уточнить главное послание предыдущей части. Человек, собирающийся делать карьеру учёного в России, вероятно, догадывается, что его зарплата будет ниже, чем у коллег из Германии или США. Но не все знают, что наш научный процесс в большинстве случаев отделён от «общемирового» (разумеется, есть яркие исключения, всё-таки не при железном занавесе живём). Я не говорю сейчас, хорошо это или плохо. Просто сей факт необходимо знать и принимать во внимание.
Читать дальше →

Принципы usability для CMS

Reading time4 min
Views2.1K
Ни разу не слышал, чтобы наши (читай: совковые) вендоры коробочных CMS заказывали usability тестирование своих продуктов. Напрашивается два основных вывода:
  1. Usability этих систем и так на высоте! В каждой компании есть свои usability специалисты, которые принимают участие в разработке на всех стадиях развития продукта – организуют тестирования, дают рекомендации, экспертную оценку и т.д. В таком случае это UDD – User-Driven Development.
  2. Usability этих систем по-взрослому сосет. Программеры делают функционал. Дизайнеры делают дизайн. Маркетинг делает продажи. Программер думает об эклипсе. Дизайнер думает о фотошопе. Маркетолог думает о пауерпоинте. Ну а конечный пользователь периодически задумывается обо всех трех сразу – об их интеллекте, сексуальной ориентации и месте произрастания их передних конечностей. Это методология AUDD – Anti-User-Driven Development или Angry User Driven Development.
Если вам известны компании, которые работают по первой схеме, то дайте знать. На ребят, делающих все по второй схеме, я насмотрелся вдоволь, поэтому считаю полезной для всеобщего ознакомления публикацию «11 usability principles for CMS products» за авторством James Robertson. Далее позволю себе привести вольный пересказ списка из одиннадцати принципов CMS usability, которые выделяет Джеймс, с моими комментариями.
Читать дальше →

Firebug: Part 2 — commands

Reading time2 min
Views1.7K
Это продолжение серии статей про Firebug.

Весь цикл: Console, Commands, Debugging ,Profiling

Firebug имеет приятную особенность — собственные функции.
Некоторые из них вам уже встречались, например в Prototype.
И чтобы вы не сомневались в том, что все честно, то мы продолжим мучать домашнюю страничку Firebug, т.к. на ней нет подключенных js файлов.

Читать дальше →

Начало научной карьеры (часть 1)

Reading time4 min
Views18K
Всем доброго времени суток!

Замечаю, что темы, связанные с образованием и наукой на Хабре достаточно популярны. Я тоже решил внести свой небольшой вклад в развитие этого направления. На сей раз речь пойдёт о том, как в принципе выглядит университетская карьера, какие в ней имеются особенности, сложности и подводные камни.
Читать дальше →

Расширения для Firebug

Reading time2 min
Views4.1K
Последнее время появляется все больше и больше различных дополнений для Firebug'a. Решил сделать краткое описание для этих плагинов.
Здесь были описаны только 4 плагина.
Постараюсь описать все известные плагины для Firebug'a
Статья на украинском языке
Читать дальше →

Тим О’Рейли. Работа, которая имеет значение: основные принципы

Reading time7 min
Views10K

Work on Stuff that Matters: First Principles


опубликовано 11 января 2009 года

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

Но прежде всего я хочу прояснить, что «работа, которая имеет значение» не подразумевает только некоммерческие проекты, благотворительность или иную форму «добрых дел». Некоммерческие проекты часто означают хорошее дело, и люди с техническими способностями могут внести важный вклад, но очень важно выбраться за пределы этих рамок. Я абсолютно убеждён в социальной ценности бизнеса, который ведётся правильно. Нам нужно создать экономическую систему, в которой общественно значимые проекты автоматически и гарантированно получают вознаграждение, а не основанную на благотворительных организациях, финансируемых по доброте сердечной.
Читать дальше →

Избавляемся от дополнительных настроек jabber-клиента в Google apps

Reading time2 min
Views7.1K
Судя по количеству плюсов к посту про использование google apps в качестве сервера jabber эта тема волнует хабрапользователей. Поэтому я решил внести свои пять копеек.

В документации гугла сказано, что при настройке кастомного клиента нужно вводить в свойствах соединения сервер talk.google.com и порт. Это очень не удобно, так как надо всё время помнить эти настройки, да и затрудняет настройку клиента вашими родственниками/знакомыми, которых пугает только одно слово порт :) Почему-то в документации к google apps этого не сказано, но прописать адрес и порт, которые должны быть использовать при подключении, можно в srv записях dns, да именно там, где вы указаывали адреса для федеративных сетей.

Добавляем запись типа:

_xmpp-client._tcp.yourdomain.com. IN SRV 5 0 5222 talk.google.com.


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

Ликбез по основам безопасности и криптографии

Reading time6 min
Views12K

Криптография



Три кита криптографии — хеш, шифрование симметричное, шифрование асимметричное (с открытым ключом). Основываются криптографические алгоритмы на сложности вычисления больших чисел, но подробнее об этом, если вас конкретно интересует «начинка», стоит читать не в общих обзорах, именуемых ликбезом. Здесь же содержится простое изложение, без лишних заморочек, то есть поверхностное.
Читать дальше →

Удаленная работа: тим-лиду и программистам

Reading time4 min
Views26K
Достоинства удаленной работы очевидны — меньше ограничений в поиске специалистов с нужной квалификацией, возможность нанимать людей за пределами МКАД, меньше расходов на ведение бизнеса. С другой стороны, есть и проблемы: наиболее значительные — со стороны организации работы. Последние 4 года я работаю тим лидом распределенной группы программистов (3-15 человек в разное время) для зарубежного заказчика, и хочу поделиться с хабрадевелоперами опытом такой работы :-)

Здесь и далее имеется ввиду следующая организация труда:
  1. Заказчик (+on-site команда опционально) в офисе где-нибуть в Европе/США.
  2. Тим лид распределенной команды — где-то на бескрайних просторах exUSSR.
  3. Члены распределенной команды — также где-то на бескрайних просторах exUSSR.
Подразумевается, что при желании заказчик может общаться со всеми членами команды. Оплата работы — почасовая.

Читать дальше

Prett Parsing — метод Вогана Пратта для разбора выражений

Reading time3 min
Views5.8K
В тему компиляций и вычислений выражений.

В далёком 1973 году Воган Прэтт (Vaughan Pratt) предложил простой и эффективный метод разбора выражений, не использующий ни автоматы, ни грамматику как таковую.

Идея заключается в том, что каждый символ (token) наделяется свойствами:
lbp = приоритет связывания символа слева,
nud = функция, определяющая результат применения оператора в начале выражения,
led = функция, определяющая результат применения в середине выражения.

Основной разбор осуществляется по схеме:
разбор(приоритет продолжения):
    вытолкнуть символ из входного потока
    результат = вызов nud этого символа
    пока приоритет lbp следующего в потоке символа > приоритета продолжения:
        вытолкнуть символ из входного потока
        результат = применени led этого символа к текущему результату

Константы и переменные имеют приоритет связывания 0, а функция nud возвращает их значение (или ссылку). Поэтому применение разбора к константам сразу возратит их значение.
Для бинарных операторов функция led рекурсивно вызывает продолжение разбора (справа) вплоть до более низкого приоритета, и делает что-нибудь с уже накопленым (слева) результатом, и полученным рекурсивно.
Результат применения оператора аггрегируется для внешнего вызова.
Много-арные операторы — получают аргументы дополнительным вызовом функции разбора.
Префиксные операторы делаются с помощью определения для них функции nud.
Для правостороннего связывания меняется приоритет продолжения рекурсивного разбора.

На сайте effbot.org приводится подробная реализация на питоне.
Там же есть ссылки для жаваскрипта и схемы.
наглядный пример на питоне

Gentoo+drbd+ocfs2

Reading time4 min
Views11K

Введение


Поставили передо мной как-то задачу… говорят один сервер это хорошо… но учитываю рост посетителей, неплохо бы было повысить производительность отдачи и для этой цели будет приобретен еще 1 сервер…
еще один сервер это хорошо, подумал я… только что с ним делать ??
Поговорив с програмистом и примерно поняв чего он хочет…

А именно одновременную отдачу контента, и что-то типа nfs или шары…
но тогда был бы оверхед ибо данные гонялись по сети и нагружен был бы диск одного сервера, посему надо было чтобы данные одновременно хранились на обоих серверах и реплицировались друг на друга…
поискав в гугле что-то на эту тему нашел информацию по кластерным фс, и для меня подходили gfs2 и позднее обнаруженная ocfs2, но была проблема в том что обычно использовалось выделенное файловое хранилище и его уже монтировали ноды… что было неприемлимо для меня, и тогда позадавав вопросы народу в конференции (gentoo@conference.gentoo.ru благо там были люди работающие с кластерами и прочими веселыми вещами) я вышел на drbd
Читать дальше →

Пишем Referrer tracker: мал да удал, с хранимыми процедурами MySQL

Reading time4 min
Views3.6K
Часто возникает желание посмотреть отуда приходят люди на ваш сайт, дабы пойти туда почитать что про нас любимых пишут, и рьяно вступить в полемику не отходя от кассы. Казалось бы, такая популярная штука как Google Analitycs должна делать это, но есть одна проблема — в отчете отрезаются GET-параметры, и если вы видите что ссылка с огромного форума, то вам еще предстоит найти нужную тему, что отнимает время (стоит упомянуть, что Google Analitycs требует дополнительного JS кода на страницах, что также отнимает время и трафик).
Дальше кратко про альтернативы и вперед изобретать велосипед

OCR и нейронная сеть на Javascript

Reading time1 min
Views7.4K
Некий Shaun Friedle написал любопытный javascript который автоматизирует распознавание captcha на megaupload.

Пара любопытных особенностей скрипта:
  1. используется HTML 5 функция javascript getImageData для работы с пикселями;
  2. используется искусственная нейронная сеть для распознавания и работает довольно точно.

Пример работы: herecomethelizards.co.uk/mu_captcha
Исходник: userscripts.org/scripts/review/38736

java.io.Serializable и наследование

Reading time2 min
Views25K
Что такое сериализация можно почитать в отличной статье Евгения Матюшкина.

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

Читать дальше →

Information

Rating
Does not participate
Location
Зеленоград, Москва и Московская обл., Россия
Registered
Activity