Как стать автором
Обновить
36
0

Пользователь

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

А ваш язык программирования необоснованный? (или почему предсказуемость важна)

Время на прочтение15 мин
Количество просмотров35K
Как должно быть очевидно, одна из целей этого сайта — убедить принимать F# всерьёз в роли универсального языка разработки.

Но в то время как функциональный стиль всё больше проникает в массы, и C# уже получил такие функциональные средства как лямбды и LINQ, кажется, что C# всё больше и больше наступает на пятки F#. Так что, как это ни странно, но я стал всё чаще слышать как высказывают такие мысли:

  • «C# уже обладает большей частью инструментария F#, и зачем мне напрягаться с переходом?»
  • «Нет никакой необходимости что-то менять. Всё, что нам нужно сделать, так это пару лет подождать, и C# получит достаточно от F#, что обеспечит практически все плюшки.»
  • «F# только чуть лучше, чем C#, но не настолько, чтобы в самом деле тратить время с переходом на него.»
  • «F# кажется действительно неплох, хоть и пугает местами. Но я не могу найти ему практического применения, чтобы использовать вместо C#.»

Не сомневаюсь, что теперь, когда и в Java тоже добавлены лямбды, подобные комментарии зазвучали в экосистеме JVM при обсуждении «Scala и Closure против Java».

Так что в этой статье я собираюсь отойти от F# и сосредоточиться на C# (а на его примере и на других популярных языках), чтобы показать, что даже с реализацией всех мыслимых средств функциональных языков программирование на C# никогда не будет таким же, как на F#.
Читать дальше →
Всего голосов 47: ↑36 и ↓11+25
Комментарии195

DevTips: Советы веб-разработчику (1-16)

Время на прочтение5 мин
Количество просмотров70K
Команда браузера Google Chrome проделывает огромную работу для того, чтобы разработчикам жилось лучше. Chrome DevTools — пример замечательного инструмента, сильно упрощающего отладку вашего веб-приложения. Но подчас не весь функционал этой системы виден с первого взгляда, поэтому Umar Hansa — программист из Лондона — описывает его на своем сайте, причем в весьма удобном формате: немного текста и короткий скринкаст. А мы, в свою очередь, решили сделать эти советы более доступными русскоязычной аудитории.

Содержание:
  1. Перенаправление порта позволит вам открывать локальные ссылки на мобильном устройстве
  2. Активация псевдо-классов DOM-элемента
  3. Повтор сетевого запроса при помощи cURL
  4. Запуск сохранённых блоков кода (сниппетов) на любой веб-странице
  5. Отслеживание изменений файлов через DevTools
  6. Простая запись действий страницы
  7. Поиск элементов DOM-дерева при помощи CSS-селекторов
  8. Копирование изображения в формате Data URI
  9. Переход к нужной строке при открытии файла
  10. Упрощенная навигация между правками
  11. Копирование ответа на сетевой запрос
  12. Работа с несколькими курсорами при редактировании скриптов
  13. Блочное выделение
  14. Быстрый мониторинг событий в консоли
  15. Доступ к выбранному DOM-узлу в консоли
  16. Отслеживание незавершенных сетевых запросов при помощи фильтра is:running

Продолжение: 17-32, 33-48.
Читать дальше →
Всего голосов 67: ↑62 и ↓5+57
Комментарии18

PostgreSQL и задачи, с ней связанные, на HighLoad++

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


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

Руководитель и идеолог международного сообщества, Брюс Момжан, вот уже какой год приезжает к нам на HighLoad++. Этот год не исключение, Брюс будет рассказывать про «Upcoming PostgreSQL Features» — кому рассказывать про будущее этой СУБД, как не Брюсу?

Почему же, несмотря на такую активность, это база данных по-прежнему далеко не так распространена, как, например «базулька» MySQL. В чем подвох? Эту тему мы активно обсуждали на конференции PGDay'15, которую организовал один из докладчиков HighLoad++ Илья Космодемьянский.

Для начала небольшое исследование:
  1. Крупнейшие платные CMS в России (Битрикс, Netcat, UMI) не поддерживают PostgreSQL;
  2. Самые популярные бесплатные CMS (Wordpress, Drupal, Joomla) тоже (или поддерживают с трудом или поддерживают недавно);
  3. Только каждый третий хостинг провайдер предлагает поддержку PostgreSQL.

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

К чему можно оказаться не готовым, став тим-лидом

Время на прочтение8 мин
Количество просмотров60K
imageОдин технический специалист нашей компании PayOnline, которая занимается автоматизацией приема платежей, предложил перевести статью автора Pascal de Vink, который проработал тим-лидом уже 2 года. Когда Pascal только занял эту должность, оказалось, что ко многим вещам он был просто не готов. Эта статья поможет избежать многих ошибок на пути от разработчика к лидеру команды. Ниже идет непосредственно перевод.

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

Меньше заниматься разработкой


Может, это и очевидно, но роль ведущего разработчика означает, что надо больше смотреть на общую картину, чем углубляться в конкретные аспекты того, что происходит. Я этого не понимал, пока не проработал пару месяцев, в течение которых мучился от того, что хотел разобраться во всех задачах, а времени на это не было. У меня было все меньше времени копаться в коде, а люди продолжали обращаться ко мне со своими очень узкоспециализированными задачами. Слишком поздно я понял, что надо разбираться в команде, а не во всех ее знаниях. Узнать, кто разбирается в нужной области оказалось намного быстрее и ценнее. Хотя, копаться в коде было намного веселее.
Читать дальше →
Всего голосов 74: ↑71 и ↓3+68
Комментарии27

Как я, в итоге, написал новую RTOS, протестированную и стабильную

Время на прочтение40 мин
Количество просмотров83K
Я работаю со встраиваемыми системами в течение нескольких лет: наша компания разрабатывает и производит бортовые компьютеры для автомобилей, зарядные устройства, и т.д.

image


Процессоры, используемые в наших продуктах — это, в основном, 16- и 32-битные микроконтроллеры Microchip, имеющие RAM от 8 до 32 кБ, и ROM от 128 до 512 кБ, без MMU. Иногда, для самых простых устройств, используются еще более скромные 8-битные чипы.

Очевидно, что у нас нет (разумных) шансов использовать ядро Linux. Так что нам нужна какая-нибудь RTOS (Real-Time Operating System). Находятся даже люди, которые не используют никаких ОС в микроконтроллерах, но я не считаю это хорошей практикой: если железо позволяет мне использовать ОС, я ее использую.

Несколько лет назад, когда мы переходили с 8-битников на более мощные 16-битные микроконтроллеры, мои коллеги, которые были гораздо более опытными, чем я, рекомендовали вытесняющюю RTOS TNKernel. Так что это — та ОС, которую я использовал в разных проектах в течение пары лет.

Не то, чтобы я был очень доволен ею: например, в ней нет таймеров. И она не позволяет потоку ждать сообщения сразу из нескольких очередей. И в ней нет программного контроля переполнения стека (это действительно напрягало). Но она работала, так что я продолжал ее использовать.
Читать дальше →
Всего голосов 162: ↑161 и ↓1+160
Комментарии61

ES6 в деталях: прокси

Время на прочтение11 мин
Количество просмотров23K
Ряд публикаций Джейсона Орендорфа ES6 In Depth посвящен ES6, который добавили в язык программирования JavaScript в 6 итерации ECMAScript.

Сегодня будем делать такие штуки:



Немного сложно для первого примера. Подробнее объясню позже, пока что посмотрим, что за объект мы создали.
Читать дальше →
Всего голосов 31: ↑30 и ↓1+29
Комментарии4

Healthcare IT: или как превысить бюджет на 420%

Время на прочтение4 мин
Количество просмотров14K
Для затравки, чтобы было желание прочитать дальше: «So far, … has cost … at least $115 million and annual maintenance costs are approximately $14 million. The project is five years late, incomplete, riddled with deficiencies, and much of the technology may already be out dated.»

И так, как вы могли уже догадаться, речь пойдёт о достаточно не редком явлении, хотя докладчики на многочисленных конференциях стараются скромно о подобном умалчивать, когда ИТ проект (вовсе даже не российский) долго надували-надували, а он взял, да внезапно лопнул.

— Иа, я принёс тебе подарок! Воздушный шар.
— Спасибо, Пятачок, ты настоящий друг, не то, что некоторые! Шар, это такой большой, красивый!
— Интересно, что это так громко бумкнуло! И где мой воздушный шарик, и откуда взялась эта тряпочка?
Читать дальше →
Всего голосов 24: ↑21 и ↓3+18
Комментарии13

Hash array mapped trie

Время на прочтение5 мин
Количество просмотров22K
Hash array mapped trie — это ассоциативный контейнер, который обладает свойствами хэш таблиц и trie. Операции вставки пары ключ-значение и поиск по ключу — О(1) операции.
Про trie на хабре уже писали.

Читать дальше →
Всего голосов 20: ↑20 и ↓0+20
Комментарии7

PHP и realpath_cache

Время на прочтение7 мин
Количество просмотров22K
От переводчика: разбираясь на днях с ошибкой, возникшей после деплоя сервиса, натолкнулся на эту замечательную статью про механизм кэширования файловых статусов в PHP. Предлагаю сообществу перевод.

Слышали ли вы про PHP-функции realpath_cache_get() и realpath_cache_size()? А может быть про параметры realpath_cache_size и realpath_cache_ttl в php.ini?

Кэш realpath — довольно важный механизм PHP, который нужно иметь в виду. Особенно, когда приходится работать с символическими ссылками, например, при деплое проекта. Настройка кэширования realpath может значительно влиять на быстродействие сервера и нагрузку на дисковую подсистемы сервера. Этот параметр был введен в версии 5.1, когда начали появляться первые PHP-фреймворки.

Далее мы разберемся, как все это работает под капотом, и как с этим жить. Под катом много ссылок на исходники.
Читать дальше →
Всего голосов 26: ↑25 и ↓1+24
Комментарии20

Как российские облачные сервисы для бизнеса тормозят собственный рынок

Время на прочтение10 мин
Количество просмотров19K
В момент создания, 4 года назад, наша компания понимала свое предназначение: мы упрощаем малому бизнесу использование SaaS. И хотя изначальная бизнес-модель была выбрана неверно, все это время мы находились в перманентном поиске собственной ниши. Мы застали всплеск облачных сервисов в России, видели спад и видим начинающийся второй подъем. Специфика нашего бизнеса в объединении SaaS-продуктов. И мы видим, как наши передовые SaaS-компании вставляют палки в колеса собственному рынку.

Разработчики SaaS упорно пытаются продавать ценностные продукты как массовые


SaaS не определяет подход к построению бизнеса, а характеризует способ доставки программного обеспечения. То, что к SaaS относятся как однозначные аппы (например, Google Keep), так и сложные продукты (например, Salesforce Sales Cloud), создает некоторую путаницу. Когда SaaS стал рассматриваться в России как перспективный бизнес, укоренились две противоречивые идеи. С одной стороны, SaaS стал синонимом продукта для массовых продаж, с другой стороны, создаваемые продукты ориентировались исключительно на бизнес.
Читать дальше →
Всего голосов 45: ↑35 и ↓10+25
Комментарии21

Как работает реляционная БД

Время на прочтение51 мин
Количество просмотров545K
Реляционные базы данных (РБД) используются повсюду. Они бывают самых разных видов, от маленьких и полезных SQLite до мощных Teradata. Но в то же время существует очень немного статей, объясняющих принцип действия и устройство реляционных баз данных. Да и те, что есть — довольно поверхностные, без особых подробностей. Зато по более «модным» направлениям (большие данные, NoSQL или JS) написано гораздо больше статей, причём куда более глубоких. Вероятно, такая ситуация сложилась из-за того, что реляционные БД — вещь «старая» и слишком скучная, чтобы разбирать её вне университетских программ, исследовательских работ и книг.

На самом деле, мало кто действительно понимает, как работают реляционные БД. А многие разработчики очень не любят, когда они чего-то не понимают. Если реляционные БД используют порядка 40 лет, значит тому есть причина. РБД — штука очень интересная, поскольку в ее основе лежат полезные и широко используемые понятия. Если вы хотели бы разобраться в том, как работают РБД, то эта статья для вас.
Читать дальше →
Всего голосов 232: ↑229 и ↓3+226
Комментарии134

Компенсация погрешностей при операциях с числами с плавающей запятой

Время на прочтение8 мин
Количество просмотров53K
Работа посвящена погрешностям округления, возникающим при вычислениях у чисел с плавающей запятой. Здесь будут кратко рассмотрены следующие темы: «Представление вещественных чисел», «Способы нахождения погрешностей округления у чисел с плавающей запятой» и будет приведен пример компенсации погрешностей округления.

В данной работе примеры приведены на языке програмиирования C.
Читать дальше →
Всего голосов 45: ↑44 и ↓1+43
Комментарии17

Хостинг в законе. Где хостить сайт в контексте «локализации персональных данных»

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

Осталось чуть больше двух недель до вступления в силу нового закона о локализации персональных данных россиян. В связи с новым законодательством у владельцев сайтов в Рунете все еще возникает немало вопросов по поводу того, а где же безопасней хостить сайт, и что будет, если персональные данные российских пользователей будут первично собираться, обрабатываться и храниться на серверах за пределами страны. Для того, чтобы ответить на эти вопросы и понять, так где же стоит хостить свой сайт и как не попасть в неприятную ситуацию, связанную с привлечением Роскомнадзором к ответственности за нарушение правила об обработке персональных данных российских пользователей сети, необходимо определить общие правила правового регулирования хостинга в России и обозначить пределы законодательного регулирования гражданско-правового оборота персональных данных, чему и посвящено указанное исследование.
Читать дальше →
Всего голосов 14: ↑11 и ↓3+8
Комментарии9

Пишем документацию API при помощи RAML

Время на прочтение10 мин
Количество просмотров77K
RAML

Удобство работы с любым API во многом зависит от того, как написана и оформлена его документация. Cейчас мы ведём работу по стандартизации и унификации описания всех наших API, и вопросы документирования для нас особенно актуальны.
После долгих поисков мы решили оформлять документацию в формате RAML. Так называется специализированный язык для описания REST API. О его возможностях и преимуществах мы расскажем в этой статье.
Читать дальше →
Всего голосов 34: ↑31 и ↓3+28
Комментарии39

Docker в банке. Видео с лекции Александра Тарасова из Альфа-Банка

Время на прочтение1 мин
Количество просмотров39K
Docker — технология, вокруг которой нынче огромное количество хайпа. «Shitstorm» — именно таким словом окрестил в твиттере докеровые войны один из моих немецких знакомых. Ну и конечно, вместе с «Microservices» и «Reactive», слово «Docker» прочно вошло в тройку ведущих айтишных баззвордов последних двух лет.

Неделю назад на московской встрече CodeFreeze Александр aatarasoff Тарасов из Альфа-Лаборатории (подразделение Альфа-банка) рассказал от том, как они внедряли у себя Docker, какой получили профит, какую боль и т.п. Интрига в том, что, с одной стороны, Альфа-банк — это банк, то есть, «кровавый энтерпрайз». С другой стороны… внедрили же.



Под катом — короткое описание того, о чем рассказал нам Александр и видеозапись его выступления.
Читать дальше →
Всего голосов 25: ↑24 и ↓1+23
Комментарии14

Сюжетно-ориентированные игры

Время на прочтение8 мин
Количество просмотров58K
Классические компьютерные игры начались ещё, собственно, до появления компьютеров в виде интерактивных книг. Скорее всего, в детстве у вас была одна такая либо Браславского, либо вообще из цикла про Стальную Крысу Гаррисона.



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

Базовый сюжет строился в виде системы узлов и переходов. За один проход вы задействовали примерно 25-35% страниц книги.



То есть техническая вариативность сводилась к тому, что вы всё равно получали 80% основного сюжета, но просто не всегда линейно и не всегда с одной и той же точки зрения. И автоматизации там не было почти никакой, кроме того, что вы листали страницы.
Читать дальше →
Всего голосов 68: ↑66 и ↓2+64
Комментарии33

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

Время на прочтение7 мин
Количество просмотров162K
Как построить график по n точкам? Самое простое — отметить их маркерами на координатной сетке. Однако для наглядности их хочется соединить, чтобы получить легко читаемую линию. Соединять точки проще всего отрезками прямых. Но график-ломаная читается довольно тяжело: взгляд цепляется за углы, а не скользит вдоль линии. Да и выглядят изломы не очень красиво. Получается, что кроме ломаных нужно уметь строить и кривые. Однако тут нужно быть осторожным, чтобы не получилось вот такого:

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

PostgreSQL: Приемы на продакшене

Время на прочтение9 мин
Количество просмотров90K
Можно прочитать много книг по базам данных, написать кучу приложений на аутсорс или для себя. Но при этом невозможно не наступить на грабли, при работе с действительно большими базами/таблицами особенно, когда downtime на большом проекте хочется свести к минимуму, а еще лучше совсем избежать. Вот здесь самые простые операции, как например изменение структуры таблицы может стать более сложной задачей. Наиболее интересные случаи, проблемы, грабли и их решения из личного опыта с которыми нам на проекте Pushwoosh пришлось столкнуться описаны под катом. В статье нет красивых картинок, зато есть много сухого текста.

image
Читать дальше →
Всего голосов 75: ↑70 и ↓5+65
Комментарии18

Изготовление матриц для литья силикона

Время на прочтение6 мин
Количество просмотров85K
На гиктаймс уже писали о литье пластмасс в силиконовые формы, но в этот раз мы будем лить силикон в пластмассу.

image

Краткая предыстория. Стала перед нами задача: изготовить энное количество резиновых кнопок от ключей автомобиля по образцу. Пробовали мы их печатать на 3D принтере из резинового филамента, но качество не устроило. Тогда-то и пришла мысль реверсировать технологию литья в силикон. Что из этого вышло, читайте под катом.
Много фото
Всего голосов 71: ↑69 и ↓2+67
Комментарии16

Богатый, разнообразный, свободный веб, который я так любил, за годы, проведенные мной в Иранской тюрьме просто умер. Почему никто не остановит это?

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

Семь месяцев назад, сидя за столом на кухне в своей старенькой квартире, расположенной в оживленном районе Тегерана, я повторил то, что уже делал тысячи раз. Открыв ноутбук, я разместил очередную запись в своем блоге. Это была первая запись за последние шесть лет — мое сердце разрывалось.
Читать дальше →
Всего голосов 116: ↑96 и ↓20+76
Комментарии141

Информация

В рейтинге
Не участвует
Откуда
Москва, Москва и Московская обл., Россия
Зарегистрирован
Активность