Skip to Content

Разница между плохим и хорошим IT-аналитиком в картинках

Когда на проекте плохой аналитик:

tehnicheskoe-zadanie

Хороший аналитик:

tehnicheskoe-zadanie_good

Советуем почитать в нашем блоге:

 

Как быстро построить круговую диаграмму на CSS и JavaScript

Для front-end разработчика существует огромное количество способов, которыми можно построить круговую диаграмму —  разнообразные библиотеки, плагины, потрясающие возможности SVG графики и т.д. Однако стоит, пожалуй, рассмотреть и самый простой способ создания «пирожкового» чарта, который может быть полезен, когда задача поставлена максимально просто и нет необходимости или возможности использовать дополнительные инструменты. Далее речь пойдёт о примере такой реализации.

Читать далее

Это интересно: как программисты читают статьи?

Практически каждый сайт в интернете подключен к инструменту Яндекс.Метрика, в котором есть так называемая «Карта кликов». Немного теории:

Карта кликов — инструмент для отображения статистики по кликам на вашем сайте. Клики на карте подсвечиваются разными цветами в зависимости от их частоты — теплые цвета соответствуют частым кликам, холодные — редким.

Ниже показана карта кликов нашей статьи «Оптимизация SQL-запросов (Часть 1)». Некоторые посетители нашего блога, читая статью, периодически «кликают» мышкой в текст. А вы «кликаете» в текст, когда читаете статьи? — пройдите опрос в нашей группе ВКонтакте!

Читать далее

Бизнес-аналитик, системный аналитик: в чем разница?

Продолжаем рассуждать на тему такой важной в IT профессии как аналитик. В нашем блоге уже есть статья «Аналитик в IT — кем быть?»; постараемся ее дополнить и осветить некоторые новые аспекты данной темы.

Итак, бизнес-аналитик и системный аналитик в IT — в чем разница между этими терминами? Это роли или должности? Может ли один человек их совмещать? В чем разница между плохим и хорошим аналитиком?

Читать далее

Логирование запросов Mondrian (в том числе в JasperServer)

Логирование запросов в Mondrian

Mondrian преобразует MDX-запросы в SQL. Если во время отладки стоит целью проверить правильно ли строится запрос, то самым быстрым решением будет включить логирование MDX- и SQL- запросов в самом mondrian.

Читать далее

Проксирование вызовов функций без побочных эффектов в JavaScript

Иногда требуется изменить поведение библиотечного объекта. К примеру, мы хотим, чтобы даты, которые мы получаем с сервера в формате ISO, выводились в интерфейсе в определенном формате. Хорошей идеей будет инкапсулировать эту логику, чтобы каждый раз не заглядывать в таблицу форматов и не писать moment().format('DD.MM.YYYY'). Во первых, тут правильно будет включить локаль moment.locale('ru') , но даже в этом случае нужно будет писать moment().format('L'). Естественно, форматов вывода в проекте будет много. Мне не нравится так называемый паттерн «хелпер», потому что он рано или поздно превратится в свалку всего и вся с кучей зависимостей. Мы сделаем обертку, но не простую, а в точности повторяющую API moment.js и добавляющую в него свои фишки. Делается это просто:  (надеюсь, вы используете underscore?)

App.moment = _.wrap(moment, function (moment) {
    var internalMoment = moment.apply(window, _.toArray(arguments).slice(1));
    internalMoment.formatLocal = _.partial(internalMoment.format, 'L');
    return internalMoment;
});

Вуаля. Теперь можно делать так:

var formatted = App.moment('2005-08-09T18:31:42').formatLocal();
console.log(formatted); // 09.08.2005

Как это работает

Сам moment является фабричным методом, который создает объект даты (но не типа Date, а собственный). Метод _.wrap создает новую функцию, в которой первым аргументом является оборачиваемая функция. Это позволяет нам писать код либо до, либо после ее собственного вызова. Таким образом сначала создается нормальный объект moment, а потом он расширяется. _.toArray(arguments).slice(1)  нужно для того, чтобы пользователь мог работать с методом, как если бы он работал с ним без обертки, мы просто выкидываем лишний аргумент, а остальные передаются моменту. Кстати, о методе _.partial. В нашем примере он создает новый метод formatLocale, замыкая в нем параметр ‘L’ и вызывая стандартный метод format. То есть, вызов App.moment().formatLocal()  эквивалентен moment().format(‘L’. Это называется частичное применение.

Хочу жить и работать в Москве. Часть 2. Мечта и реальность

Часть 1. Москва — это мечта!

Итак, меня позвали работать в Москву. Я обсуждал переезд с семьёй и родственниками. Родственники из Москвы твердили — надо ехать, это же другие возможности.

Ещё раз уточнил про зарплату: сопоставил с затратами на жильё и проезд (эта сумма на тот момент составила 50% моего предполагаемого дохода, хотя как я сказал меня брали с хорошим опытом и по рекомендации, стартовые условия были крайне «сладкими»), понял, что остаётся примерно то же самое, что и в Рязани. И всё-таки я решил ехать. Мама плакала одновременно от печали и радости, а я предвкушал свою красивую жизнь в столице. Если быть честным, я выбрал переезд только по двум критериям — во-первых, так получилось, что там уже жила моя будущая жена, и, во-вторых, было просто желание пожить в Москве. По финансовым и перспективным соображениям я бы лучше остался в Рязани. Надо учитывать, что переезд в Москву — это практически переход в нулевую точку. Я из потенциального директора фирмы превратился в простого специалиста.

Приехал. Сначала решил экономить и жить у родственников в пригороде Москвы. Офис был на Проспекте Мира. Ну что тут сказать. Утро — маршрутка до ж/д станции, оттуда электричка до Рижской, там пешком до метро и далее на метро. Пожив так пару недель, я стал уже «прожжёным» москвичом и справедливо решил, что я должен снимать жилье внутри МКАД — мотаться по 1.5-2 часа в одну сторону не хотелось. Было решено снимать квартиру. Поселились мы в Новогиреево. Тут «инвестиции» в переезд: платеж за квартиру вперед за месяц + депозит за последний месяц + такой же платеж за услуги риэлтора (хорошо, что риэлтор оказался порядочным, т. к. различных историй про обманы риэлторов я наслушался от своих знакомых — таких же «коренных москвичей»).

Новогиреево
Помню тот вечер… Я стою на кухне у открытого окна, а за окном…

Хочу жить и работать в Москве. Часть 1. Москва — это мечта!

Пока я жил и учился в Рязани, я, как и многие из моего окружения, хотел жить и работать в Москве. Представлюсь — меня зовут Роман Лыков, я являюсь директором по развитию компании ТиЭс Софт. События, описанные в данной серии статей, берут свое начало в 2003 году.

После завершения моей учебы в РГРТУ (тогда еще РГРТА), я нашел хорошую работу в Рязани. Не быстро. Конечно, работал и во время обучения, но во время преддипломной практики, когда уже мог работать полный день, удалось найти действительно нормальную работу. Это была работа в небольшой компании, она хорошо оплачивалась и давала возможность развития и карьерного, и профессионального, и финансового — сейчас я понимаю, что именно там я получил хорошую профессиональную и организационную базу. Отработал там три года и был всем доволен — хорошая заработная плата, жить есть где (жил тогда с родителями), все близко и все знакомо — город, люди.

За три года я успел бодро прошагать по карьерной лестнице до руководителя отдела той небольшой компании — слава Богу, в малой компании ты можешь шагать значительно быстрее, т.к. нет всяких «специальных» бюрократических процедур — аттестаций, грейдирования, тестирования и прочего. Показал результат — получи должность и лучшие финансовые условия.

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

Москва — это мечта? Москва — это мечта! Хоть я и очень хотел, но было страшно. Я не раз был в Москве (т.е. метро умею пользоваться), но никогда там не жил.

Часть 2. Мечта и реальность

Плагин Mark New Posts для WordPress

Выпущен очередной плагин для WordPress от компании TS Soft — Mark New Posts. Плагин предназначен для отметки новых записей в блоге, добавленных с момента последнего посещения пользователя.

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

В итоге был сделан новый плагин, который для каждой отдельной записи проверяет, действительно ли пользователь её видел. Более того, можно настроить плагин так, что записи, которые отображены в общем списке в неполном виде (с кнопкой «Читать далее»), будут отмечаться как прочитанные только после открытия полной версии.

Плагин Mark New Posts работает сразу после установки и активации. Никаких изменений в тему WordPress вносить не нужно.

Также плагин предоставляет две функции: mnp_is_new_post() и mnp_new_posts_count(), которые могут пригодиться разработчикам тем WordPress.

mark-new-posts-options

Страница настройки плагина

mark-new-posts-1

Маркер-кружок

mark-new-posts-2

Маркер-текст

mark-new-posts-3

Маркер-картинка

Плагин распространяется по лицензии MIT.

Страница плагина на WordPress.org

Генерация паролей для ASP.NET Membership

Для аутентификации пользователей и хранения пользовательских данных на проектах .NET часто используется технология ASP.NET Membership. Наконец, дошли руки до написания утилиты для хэширования паролей.

На данный момент утилита может хэшировать только по алгоритму HMAC SHA256 (этот алгоритм используется в SimpleMembershipProvider). В планах SqlMembershipProvider.

Скачать установщик можно с Sourceforge.
Репозиторий проекта на Github.