Как стать автором
Обновить
2
0.1
Артем Целовальников @SlazZy

ruby developer

Отправить сообщение

Перевод: Любимые инструменты технических специалистов для повышения производительности IT-персонала

Время на прочтение7 мин
Количество просмотров8.9K


Каждый год журнал Network World просит ИТ-специалистов назвать их любимые рабочие инструменты, которыми они пользуются каждый день. В этом году в этом списке представлено несколько интересных программных продуктов.
Читать дальше →
Всего голосов 10: ↑7 и ↓3+4
Комментарии0

Фреймворки портят разработку

Время на прочтение2 мин
Количество просмотров12K
Вступление

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

Сама мысль

Я полагаю, вы согласны с тем, что программирование имеет 2 смысла. Первый — мощный инструмент для решения сложных проблем(иногда простых), второй — творчество. Если с последним всё понятно — вы получаете удовольствие от процесса, придумывая оптимальный алгоритм или создавая что-то новое, то с первым не совсем.
Читать дальше →
Всего голосов 31: ↑9 и ↓22-13
Комментарии96

Так зачем же внедрять ERP-системы

Время на прочтение8 мин
Количество просмотров43K
Казалось бы, этот вопрос давно уже решен и всем всё ясно. Нет, ребята, все не так, все не так, ребята. Я сам писал на эту тему несколько лет назад, но прошли годы, ситуация изменилась. Да и страна у нас сильно изменилась, это тоже важно.

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

Когда ты задаешь такой вопрос, то можно услышать много разных вариантов ответов.
Например:

  • чтобы автоматизировать бизнес-процессы
  • чтобы избавиться от бардака
  • чтобы сделать единую монолитную систему
  • чтобы внедрить в компании современные технологии
  • чтобы сократить штат


И реже (но все чаще и чаще) звучат такие ответы как:

  • чтобы улучшить качество планирования
  • чтобы снизить запасы
  • чтобы увеличить скорость потока и оборачиваемость
  • чтобы производить точно в срок
  • чтобы повысить прибыльность проектов

Читать дальше →
Всего голосов 22: ↑18 и ↓4+14
Комментарии16

Миллион строк плохого кода

Время на прочтение4 мин
Количество просмотров48K
«No pain, no gain», как гласит древняя восточная мудрость. И даже если мудрость не древняя и не восточная, лично для меня самый ценный жизненный опыт чаще всего был и самым болезненным. Недавний пост Дэвида Робинсона — аспиранта, занимающегося программированием в стенах Принстонского университета — посвященный код ревью, не только поднял важный вопрос повседневного быта каждого, кому волей (или неволей) приходится передавать свой опыт другим. Оригинальный текст был относительно «беззубым», однако, пост перестал быть томным после того, как в комментариях появился Джон Кармак.

Это история о плохом коде, который однажды написал ваш покорный слуга.

На одном из первых курсов университета я писал программу на Java, которая должна была читать файл весом в 6 MB в строку (этим файлом был геном бактерии в формате FASTA). Выглядел мой код следующим образом:

BufferedReader reader = new BufferedReader(new FileReader (file));
String line = null;
String text = "";

while( ( line = reader.readLine() ) != null ) {
    text = text + line;
}

Построение строки при помощи серии конкатенаций подобным образом крайне неэффективно — у меня, без преувеличения, уходило около 40 минут на чтение файла (с тех пор я узнал несколько способов получше). Самое главное — после чтения файла весь оставшийся алгоритм в программе отрабатывал секунд за 10. Два дня я так и работал: делал изменения в коде, запускал программу и успевал посмотреть целый эпизод LOST, прежде чем программа завершала выполнение. «Черт, на двенадцатой строчке ошибка! Опять все по-новой...»
Читать дальше →
Всего голосов 52: ↑45 и ↓7+38
Комментарии50

6 привычек уверенных в себе людей

Время на прочтение4 мин
Количество просмотров17K
image

Бесстрашные дети часто превращаются в неуверенных в себе взрослых. Как люди умудряются сохранять уверенность в себе, невзирая на поражения? В этой статье Stephanie Vozza, расскажет о привычках, которые типичны для всех уверенных в себе людей.
Читать дальше →
Всего голосов 28: ↑17 и ↓11+6
Комментарии8

93 видео-лекции по Scala

Время на прочтение4 мин
Количество просмотров39K
В ходе подготовки спецкурса «Scala for Java Developers» под платформу онлайн-обучения UDEMY, я анализирую другие «лекционные» видео. В библиотеке накопилось какое-то количество ссылок на дельных учебные материалы по Scala (видео на английском).

Для большинства видео указано количество просмотров. Надо сделать несколько замечаний:
1. Количество просмотров не является главным критерием качества и полезности видео, но этот может служить каким-то указателем на ценность.
2. Здесь не все популярное видео, что я встречал, а лишь то, что ценно по моему личному мнению.
3. Если кто-то знает еще хорошее видео — пишите, добавлю в списки.


Читать дальше →
Всего голосов 21: ↑19 и ↓2+17
Комментарии5

Заглянем за кулисы разработки: подборка исходных кодов классических игр

Время на прочтение10 мин
Количество просмотров83K
Обожаю заглядывать за кулисы. Мне интересно, как делаются вещи. Мне кажется, что большинству людей это тоже интересно.

Исторически так сложилось, что видеоигры не делятся исходниками. Конечно, они ведь предназначены для игроков. Но для программистов там всегда есть, на что посмотреть. И некоторые игры всё-таки выпускали свои исходники. А я давно намеревался сделать такую подборку.

К сожалению, почти все игры – для PC. Найти исходники для консолей или аркад почти нереально, и большинство программистов не в курсе различий подходов к программам на платформах, отличных от PC.

Многие игры после выпуска исходников были улучшены и дополнены сообществом – я намеренно даю ссылки только на оригинальные исходники. Так что, если вас вдруг интересуют апгрейды – они могут существовать.

Многие игры были рассмотрены на сайте Fabien Sanglard. Если вам интересны подробности их работы, то пожалуйте к нему.

Можно заметить, что многие игры принадлежат id Software/Apogee. Совпадение? Не думаю. id славится открытостью и привычкой выпускать исходники. Старые коммерческие игры уже не имеют ценности и были бы потеряны – не лучше ли, чтобы кто-то учился чему-то полезному на их основе?

Итак, приступим (в хронологическом порядке):
Читать дальше →
Всего голосов 58: ↑56 и ↓2+54
Комментарии12

В поисках справедливости: Очевидные принципы мотивации профессионалов, которые не сразу пришли в голову

Время на прочтение14 мин
Количество просмотров29K


Привет, Мегамозг!

Сегодня мы хотели бы поделиться текстом Михаила Завилейского, генерального директора DataArt и автора другой замечательной статьи о менеджменте. Надеемся, вам понравится!

Disclaimer и благодарности

Хочется поделиться множеством мыслей, которые стали моими существенно позднее, чем мне хотелось бы и не пришли в мою голову «сами по себе». Просто довелось нечто услышать, увидеть, прочитать или получить совет, и в голове что-то «встало на место». Я бы хотел сказать спасибо всем поимённо, но не могу — помню только книжки Дэвида Майстера, пересказы семинаров Михаила Гринфельда и еще лица полудюжины умнейших людей, чьи имена я забыл… А скольких уже совсем не помню, но всё равно — всем спасибо! И вдруг еще кому-то пригодятся ваши идеи.
Читать дальше →
Всего голосов 27: ↑22 и ↓5+17
Комментарии4

Python Meetup 27.03.15: machine learning, python AST и статистика игроков World of Tanks

Время на прочтение1 мин
Количество просмотров13K
Традиционно в последнюю пятницу месяца состоялся Python Meetup. В мартовском митапе с приглашенными спикерами мы разобрались в следующих темах:
  • Машинное обучение на Python
  • Как устроен Python AST и какие интересные факты есть у диалекта Ну
  • Как при помощи Requests, Asyncio и Aiohttp перестать использовать многопоточный код

Видео и ссылки на презентации смотрите под катом. Приятного просмотра!

image
Читать дальше →
Всего голосов 12: ↑11 и ↓1+10
Комментарии0

Веб на чистой Java. Изучаем Vaadin — крутой фреймворк для создания веб-приложений

Время на прочтение16 мин
Количество просмотров112K


В клиент-серверной архитектуре место Java-приложения — преимущественно на серверной стороне, при этом веб-интерфейс пишется отдельной группой фронт-енд разработчиков на JavaScript. Java не предлагает адекватных средств для создания современного веб-интерфейса (когда в последний раз ты видел Java-апплет..?) ни с точки зрения дизайна, ни с точки зрения реализации клиент-серверного взаимодействия.

А что, если бы все клиент-серверное приложение целиком писалось на Java, но его клиентская часть была бы «нативной» для браузера и соответствовала бы самым современным представлениям о юзабилити?
Читать дальше →
Всего голосов 27: ↑20 и ↓7+13
Комментарии38

Видео докладов с MoscowJS Meetup

Время на прочтение1 мин
Количество просмотров12K
Недавно в офисе Badoo проходил юбилейный MoscowJS Meetup. Делимся с вами видео докладов.

1. «Специфика верстки мультиязычных веб-приложений»
Александр Тевосян, Badoo.




+ Выложили на GitHub нашу утилиту rtl-css специально к митапу: https://github.com/badoo/rtl-css
Читать дальше →
Всего голосов 22: ↑21 и ↓1+20
Комментарии6

Обфускация программ

Время на прочтение4 мин
Количество просмотров113K
Обфускация программ — это прорывная, самая горячая сегодня, область криптографии. За последние два года написано свыше 70ти статей по этой теме, она вызывает жаркие дискуссии, создает настоящие гонки между исследовательскими группами, открывает полигон для научных изысканий. Более того, оказывается, что обфускация — фундаментальный, образующий примитив, который порождает практически всё, что мы имеем в криптографии сегодня. Разберемся, с тем что же это такое.

Давая пользователям доступ к установочным файлам программ, компании неизбежно раскрывают свои профессиональные секреты и наработки, и ничто не останавливает злобонравных конкурентов от беззастенчивого копирования и воровства чужих алгоритмов. Обратим внимание и на другой пример, это важные обновления (патчи), исправляющие ошибки в операционных системах. Почти мгновенно очередное обновление анализируется хакерами, они выявляют проблему которую это обновление чинит, и атакуют несчастных, не успевших вовремя обновиться, пользователей.
imageЭти две ситуации связывает одна фундаментальная проблема, а именно: написанная человеком программа может быть человеком же и понята, проанализирована, разобрана. А что если существовал бы алгоритм, который бы мог до неузнаваемости, необратимо переделать программу при этом сохраняя ее функциональность? Так чтобы программу совершенно невозможно было бы понять, но при этом она работала бы ничуть не хуже исходной? Такой алгоритм и называется «обфусцирующий» или «обфускатор».
Читать дальше →
Всего голосов 51: ↑30 и ↓21+9
Комментарии75

О бедной рекурсии замолвите слово, или всё, что вы не знали и не хотите о ней знать

Время на прочтение8 мин
Количество просмотров78K
Рекурсия: см. рекурсия.

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

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

— Как она сложена?
— Превосходно! Только рука немного торчит из чемодана.

Именно пытаясь разместить стройную теорию алгоритма в жесткий рюкзак реальных ресурсов и приходится постоянно кроить по живому, перепаковывать, и вместо красивых и стройных определений Фибоначчи:

  def fib(n):
    if n<0: raise Exception("fib(n) defined for n>=0")
    if n>1: return fib(n-1) + fib(n-2)
    return n

приходится городить всевозможные грязные хаки, начиная от:

  @memoized
  def fib(n):
    if n<0: raise Exception("fib(n) defined for n>=0")
    if n>1: return fib(n-1) + fib(n-2)
    return n

И заканчивая вообще:

  def fib(n):
    if n<0: raise Exception("fib(n) defined for n>=0")
    n0 = 0
    n1 = 1
    for k in range(n):
      n0, n1 = n1, n0+n1
    return n0

Читать дальше →
Всего голосов 55: ↑44 и ↓11+33
Комментарии63

Опрос от StackOverflow определил самые доходные и самые популярные IT-технологии

Время на прочтение2 мин
Количество просмотров27K
Известный ресурс для программистов и других представителей IT-профессий StackOverflow провёл опросы на тему нужности, полезности и доходности языков программирования. Результаты приведены в подробном отчёте «Разработчик 2015». Попробую остановиться на наиболее интересной статистике.

Популяция


По количеству человек, принявших участие в опросе, лидируют США и Европейские страны. При этом, как известно, больше всего людей живёт в Китае и Индии.


Читать дальше →
Всего голосов 51: ↑46 и ↓5+41
Комментарии28

Три парадигмы F#

Время на прочтение16 мин
Количество просмотров21K

Введение


Все, кто так или иначе связан с .NET программированием знает, что уже в следующую версию Visual Studio будет встроен новый язык программирования — F#, который позиционируется как функциональный, чем сразу, так уж повелось, вызывает подозрения в бесполезности. Для того, чтобы показать, что F# — куда больше, чем просто ФЯП (хотя и просто ФЯП — это очень немало), я и написал все нижеследующее.
Эта статья, несмотря на изрядную длину, не претендует на то, чтобы полностью описать всю функциональность языка. Это всего лишь краткий обзор, призванный продемонстрировать широкий спектр возможностей, каждая из которых заслуживает отдельной статьи, и даже не одной.
Кроме того, написав такой пространный пост, я хотел сделать задел на будущее, чтобы в дальнейшем мне не отвлекаться на незначительные вещи базового уровня. Конечно, сразу головой в пруд — это действенно, но и какой-никакой фундамент не помешает.
А уже в следующий раз я приведу пример на волнующую тему пригодности F# для обычной профессиональной программистской деятельности.
И еще раз, под катом действительно МНОГО текста. И не говорите потом, что я вас не предупреждал. =)
Читать дальше →
Всего голосов 43: ↑40 и ↓3+37
Комментарии68

Книги для работы в IT компаниях

Время на прочтение5 мин
Количество просмотров30K
Доброго времени!
Представляем вам подборку книг для трудоустройства и работы в IT компаниях.

image

Мы считаем, что книги должны быть доступны, предлагаем воспользоваться скидкой 50% и прийти к нам в издательство забрать безвозмездно другие книги. Подробности внутри.
Читать дальше →
Всего голосов 15: ↑15 и ↓0+15
Комментарии12

Как устроена apache cassandra

Время на прочтение13 мин
Количество просмотров229K
Кассандра
В этом топике я хотел бы рассказать о том, как устроена кассандра (cassandra) — децентрализованная, отказоустойчивая и надёжная база данных “ключ-значение”. Хранилище само позаботится о проблемах наличия единой точки отказа (single point of failure), отказа серверов и о распределении данных между узлами кластера (cluster node). При чем, как в случае размещения серверов в одном центре обработки данных (data center), так и в конфигурации со многими центрами обработки данных, разделенных расстояниями и, соответственно, сетевыми задержками. Под надёжностью понимается итоговая согласованность (eventual consistency) данных с возможностью установки уровня согласования данных (tune consistency) каждого запроса.

NoSQL базы данных требуют в целом большего понимания их внутреннего устройства чем SQL. Эта статья будет описывать базовое строение, а в следующих статьях можно будет рассмотреть: CQL и интерфейс программирования; техники проектирования и оптимизации; особенности кластеров размещённых в многих центрах обработки данных.
Дорогу осилит идущий...
Всего голосов 77: ↑75 и ↓2+73
Комментарии35

Линейная алгебра: пробный заезд

Время на прочтение7 мин
Количество просмотров145K
Привет, Хабр!

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

Часто первое знакомство с линейной алгеброй выглядит как-то так:

image

Не очень вдохновляет, правда? Сразу возникает два вопроса: откуда это все взялось и зачем оно нужно.

Начнем с практики


Когда я занимался вычислительной гидродинамикой (CFD), один из коллег говорил: «Мы не решаем уравнения Навье-Стокса. Мы обращаем матрицы.» И действительно, линейная алгебра — «рабочая лошадка» вычислительной математики:


Читаем дальше...
Всего голосов 36: ↑35 и ↓1+34
Комментарии15

Учебник по языку SQL (DDL, DML) на примере диалекта MS SQL Server. Часть пятая

Время на прочтение41 мин
Количество просмотров197K

Предыдущие части




В данной части мы рассмотрим


Здесь мы в общих чертах рассмотрим работу с операторами модификации данных:
  • INSERT – вставка новых данных
  • UPDATE – обновление данных
  • DELETE – удаление данных
  • SELECT … INTO … – сохранить результат запроса в новой таблице
  • MERGE – слияние данных
  • Использование конструкции OUTPUT
  • TRUNCATE TABLE – DDL-операция для быстрой очистки таблицы

В самом конце вас ждут «Приложение 1 – бонус по оператору SELECT» и «Приложение 2 – OVER и аналитические функции», в которых будут показаны некоторые расширенные конструкции:
  • PIVOT
  • UNPIVOT
  • GROUP BY ROLLUP
  • GROUP BY GROUPING SETS
  • использование приложения OVER


Операции модификации данных очень сильно связаны с конструкциями оператора SELECT, т.к. по сути выборка модифицируемых данных идет при помощи них. Поэтому для понимания данного материала, важное место имеет уверенное владение конструкциями оператора SELECT.
Читать дальше →
Всего голосов 15: ↑14 и ↓1+13
Комментарии11

Твой код никого не интересует

Время на прочтение4 мин
Количество просмотров81K
Мой код никого не интересует. Я был повержен в шок, когда осознал это в процессе работы программистом. Я тратил много времени на оттачивание своего кода, пока не понял, что он никого не интересует, ведь в зачет идет не сам код, а продукт. Принятие программистом этого факта приведет к повышению продуктивности и ценности его работы.
Читать дальше →
Всего голосов 122: ↑87 и ↓35+52
Комментарии200

Информация

В рейтинге
3 629-й
Откуда
Тула, Тульская обл., Россия
Дата рождения
Зарегистрирован
Активность