• Универсальный конвертер данных на платформе .Net Framework

    Универсальный конвертер данных на платформе .Net Framework


    В этой статье я хотел бы рассказать опыт нашей команды по созданию универсального конвертера данных. На первый взгляд звучит очень просто, что тут сложного? Взять один тип данных привести к другому типу. А если данные это структура? Тоже не трудно, вы скажете, просто нужно выполнить меппинг полей. Да, просто. Но когда целевых структур несколько, все они сложные и требуется конвертация “на лету”, да еще и с обогащением данных, то как говорится “надо думать”.

    Читать дальше →
  • Обучение программированию онлайн — а все ли так просто как кажется?

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

    Так как цена был подъемная (10 000 р. за основы языка — java core) и в QA знание языка программирования является жирным плюсом — то я, недолго раздумывая, согласился.
    Постараюсь кратко описать плюсы, минусы, а также свои впечатления от данного мероприятия.

    Начну с плюсов


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

    Для участников курсов весь вспомогательный материал расшарен и находится в открытом доступе.Все видеозаписи занятий выкладывались на google диск, а книги и доп. материалы можно было найти на гит лаб. Там же задавалась домашка. Для программирования использовали IntelliJ IDEA, домашку для проверки отправляли в репозиторий на Bitbacket через GIT (да-да, с ним тоже обучали работать). Несомненный плюс онлайна заключается в том, что все необходимое для занятий расположено на трех соседних вкладках браузера.

    2) Относительно небольшая группа учащихся. На момент когда я начинал занятия, в группе было 4 человека. А учитывая, что преподавателей было 3, то они могли уделить достаточно внимания и, в какой то степени, индивидуальный подход каждому ученику.

    3) Хороший преподавательский состав. В менторах были ребята с неплохим опытом работы в программировании. Они хорошо объясняли материал. Старались подробно разбирать задачи, и почти всегда были на связи. При возникновении вопроса можно было договориться, созвониться по скайпу и в тот же день решить проблему, даже если занятия в этот день не было.
    Читать дальше →
  • Своя СУБД за 3 недели. Нужно всего лишь каждый день немного времени…

    Своя СУБД за 3 недели. Нужно всего-лишь каждый день немного времени уделять архитектуре; и всё остальное время вкалывать на результат, печатая и перепечатывая сотни строк кода.

    По закону Мерфи, если есть более одного проекта на выбор — я возьмусь за самый сложный из предложенных. Так случилось и с последним заданием курса о системах управления базами данных (СУБД).

    обложка /dropSQL

    Дропнуть студентов
    • +11
    • 1,9k
    • 3
  • Javascript — решение асинхронной проблемы?

    В этой статье, я хочу рассказать про свое решение проблемы с асинхронной функциональностью javascript, по средствам введения полностью асинхронной модели вычислений. Будет описана сама концепция, и дана ссылка на реализацию. Заинтересовавшихся прошу под кат.

    Читать дальше →
  • Поведения — behaviours Erlang-е

    Добрый день.

    Пара слов о себе сначала. Я пишу на Erlang-е около 10 лет и приветствую появившиеся в последнее время схемы и диаграммы. Но я помню какой переворот в моем коде вызвало применение поведений, и думаю что это интересная тема для сложных продуктов.

    Зачем нужны поведения? Поведение — суть определение интерфейса. Установка контракта между вызывающей стороной и имплементацией. Ну и все что из этого вытекает в случаях обычного определения интерфейса класса. Только в этом случае мы определяем интерфейс модуля.

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

    Если поведения декларируют функцию, совпадающую по имени и количеству параметров, то при компиляции появляется логичное предупреждение conflicting behaviours.

    Синтаксическая сторона очень проста. Я положу код для примера и потом продолжу описание.
    Читать дальше →
  • Максимально просто про перебор комбинаций в реальных бизнес-задачах

    Если начать искать материал про перебор комбинаций, возникает масса примеров как перебрать все сочетания всех букв или всех цифр. Но как создать все сочетания элементов матрицы, в которой заранее неизвестна размерность, не углубляясь в Иосифа Романовского и его «Дискретный Анализ», такого материала я не нашел, поэтому и решил написать его здесь. Вдруг кому-то понадобится.
    Читать дальше →
  • Конвертирование из Sketch в PSD

    Конвертирование дизайн-макетов из формата .Sketch в .PSD



    SKETCH — мощный инструмент, который давно используют веб-дизайнеры по всему миру. Своей популярностью он обязан высокой производительностью и уникальной системой символов, с возможностью создания для них отдельных подключаемых библиотек.

    К сожалению, пользоваться этой артиллерией могут лишь обладатели компьютеров на платформе MAC OS. Продукты Adobe являются доминирующим инструментом для веб-дизайнеров, работающих под ОС Windows, но сильно уступают перед «Sketch». Исходя из этого, вопрос конвертации макета для просмотра на обоих операционных системах актуален как никогда.

    В этой статье будут рассмотрены тонкости процесса конвертирования, преимущества и недостатки различных методов.
    Читать дальше →
  • Почему опытные разработчики пишут тупой код и как распознать новичка за километр

    Предлагаю читателям «Хабрахабра» перевод публикации «Why Senior Devs Write Dumb Code and How to Spot a Junior From A Mile Away» за авторством Scott Shipp.


    Одна из моих любимых цитат на все времена — Брайана Гетца (Brian Goetz), умнейшего чувака из мира Java, одного из авторов «Java Concurrency in Practice», кроме всего прочего. Цитата взята из интервью, опубликованном на сайте Oracle под заголовком «Пишите тупой код» («Write Dumb Code»). Гетца спросили, как писать хорошо работающий код.
    Вот что он ответил
  • Опыт продаж для рекрутинга в IT

    Приветствую всех, кто так или иначе связан с IT-рекрутингом!

    Новогодние праздники прошли, и настало время опубликовать давно назревавшую статью о работе рекрутеров, точнее о том, как рекрутеры не работают.

    image

    Шесть лет назад я был ведущим специалистом по продажам, но решил совершить дауншифтинг и уйти в IT. Мой путь не был простым и я поработал на различных позициях, от Junior Front-end практиканта, до основателя собственной IT компании. Сегодня я решил поделиться своим опытом и видением того, что же происходит в IT-рекрутинге, со стороны бывшего продавца. Я расскажу в чем важность отношений с разработчиками и при чем тут вообще продажи.
    Читать дальше →
    • +13
    • 3,8k
    • 3
  • Профилировщик запросов в БД в Phoenix. И немножко о том как работает stacktrace в Elixir/Erlang

    В нашей компании мы используем Elixir, фреймворк Phoenix и Ecto. И недавно на работе мне поставили задачу, сделать профилировщик запросов в БД, чтобы выяснить узкие точки системы, которые следует оптимизировать. Таким образом задачи были следущие:


    1. Выяснить, какие функции чаще всего обращаются в базу (query calls)
    2. Выяснить какие функции создают самые долгие и медленные запросв (query time)
    3. Результаты необходимо аккумулировать и выводить в виде списка/графика.

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


    https://github.com/parroty/exprof
    http://erlang.org/doc/man/fprof.html
    https://github.com/proger/eflame
    https://github.com/TheRealReal/new-relixir


    и др.


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

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