Pull to refresh
52
0
Дмитрий @mrded

Senior Pomidor

Send message

Две простенькие задачи на Haskell (для начинающих)

Reading time5 min
Views18K
Приветствую всех пользователей Хабрахабр!
Я недавно начал изучать Haskell, и, немного освоив его, решил поделиться небольшим накопленным опытом. Конечно же, знания Haskell у меня не на таком уровне как у Darkus, поэтому две задачи, которые описаны ниже, ориентированны больше на новичков, но опытные пользователи возможно и поправят, и подскажут как лучше сделать. Эта не только моя первая статья на Хабрахабр, но и вообще мой первый туториал, который я когда-либо писал.
Читать дальше →
Total votes 25: ↑21 and ↓4+17
Comments6

Прелюдия или как полюбить Haskell

Reading time3 min
Views30K
Добрый дня, уважаемые хабровчане. Всегда трудно начинать. Трудно начать писать статью, трудно начать отношения с человеком. Очень трудно, бывает, начать изучать новый язык программирования, особенно, если этот язык рушит все представления и устои, которые у вас были, если он противоречит привычной картине мира и пытается сломать вам мозг. Пример такого языка — Haskell.
Полюбить Haskell
Total votes 78: ↑57 and ↓21+36
Comments107

Конспекты лекций «Haskell как первый язык программирования». Часть1

Reading time3 min
Views46K
image
Привет Habr! Сегодня я достал свои старые конспекты по курсу «Haskell как первый язык программирования» Сергея Михайловича Абрамова и попробую максимально доходчиво и с примерами рассказать об этом замечательном языке тем, кто с ним еще не знаком. Рассказ ориентирован на неподготовленного читателя. Так что, даже если вы впервые услышали слово Haskell…
добро пожаловать под кат.
Total votes 35: ↑30 and ↓5+25
Comments42

Полный перевод Unix-коанов на русский язык

Reading time16 min
Views75K


Представляю на ваш суд ещё один перевод коанов о Мастере Фу на русский язык. В данный сборник вошли все коаны, на данный момент опубликованные на сайте Эрика Реймонда. Надо сказать, что сам Эрик личность весьма неординарная, но упоминания в данной статье стоящая. Помимо холиваров в списках рассылки всевозможных проектов за его авторством также несколько серьёзных трудов о Unix — в том числе и о сообществе, без которого экосистема современных открытых проектов не была бы возможной (полный список книг). Идея перевести коаны в очередной раз пришла мне в голову во время чтения одного из таких трудов, а именно «The Art of Unix Programming», поскольку многое из скрытого смысла коанов становится ясно только после прочтения очередной главы оттуда.

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

Итак
Total votes 126: ↑123 and ↓3+120
Comments65

Как происходит рендеринг кадра в GTA V

Reading time16 min
Views118K
Серия игр Grand Theft Auto прошла долгий путь с момента своего первого релиза в 1997 году. Примерно 2 года назад Rockstar выпустила GTA V. Просто невероятный успех: за 24 часа игру купило 11 миллионов пользователей, побито 7 мировых рекордов подряд. Опробовав новинку на PS3, я был весьма впечатлен как общей картинкой, так и, собственно, техническими характеристиками игры.

Ничто так не портит впечатление от процесса, как экран загрузки, но в GTA V вы можете играть часами, преодолевая бескрайние сотни километров без перебоев. Учитывая передачу солидного потока информации и свойства PS3 (256 Mb оперативной памяти и видеокарта на 256 Mb), я и вовсе удивился, как меня не выбросило из игры на 20-ой минуте. Вот где чудеса техники.

В этой статье я расскажу о проведенном анализе кадра в версии для ПК в среде DirectX 11, которая съедает пару гигов как оперативки, так и графического процессора. Несмотря на то, что мой обзор идет со ссылкой на ПК, я уверен, что большинство пунктов применимо к PS4 и в определенной степени к PS3.

Анализ кадра


Итак, рассмотрим следующий кадр: Майкл на фоне любимого Rapid GT, на заднем плане прекрасный Лос-Сантос.

image

Осторожно! Трафик!
Читать дальше →
Total votes 164: ↑158 and ↓6+152
Comments65

Пользуйтесь подсветкой кода

Reading time3 min
Views30K
Это обзор и частичный перевод статьи Advait Sarkar из Computer Laboratory, University of Cambridge «The impact of syntax colouring on program comprehension».

Краткое содержание


Взяли 10 случайных «computer science» студентов-магистров из University of Cambridge (на самом деле 7, так как 3 очкарика оказались частично несовместимы с оборудованием Tobii2 X120 eye tracker). Предложили разбираться с короткими вычислительными задачами на Python (надо было назвать корректный результат выполнения кода). Замеряли время выполнения задач. Не давали ничего записывать на бумажке (только думать, можно вслух). Следили за глазами с помощью упомянутой окулографической системы.

В конце попросили оценить свой опыт в программировании (да, с учетом возможного эффект Даннинга — Крюгера).

Выводы


  • Подсветка помогает быстрее понимать код. На примере 6 задач с общим временем решения в 13 — 20 минут:
    • 8.4 секунды разницы между медианами времени выполнения задачи (с гипотезой, что для больших задач эффект становится заметнее)
    • значительное (на 23 штуки) уменьшение количества переключений внимания (переводов и фиксации взгяда с места чтения на различимо другую область задания)
  • эффективность помощи обратнопропорциональна квалификации (но нелинейно, т.е. не установлено, что когда-то подсветка перестанет помогать)
  • работает только в том случае, если вы знаете что каким цветом подсвечивается
  • мозг может игнорировать подсказки подсветки, если вы «ищете свободным поиском» (т.е. подсветка не мешает размышлять)

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



В общем, все хорошо, всем цветов!

Графики, цифры и более подробные выводы из статьи:
Читать дальше →
Total votes 40: ↑36 and ↓4+32
Comments104

Горутины: всё, что вы хотели знать, но боялись спросить

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

Что за горутины?

Горутина (goroutine) — это функция, выполняющаяся конкурентно с другими горутинами в том же адресном пространстве.

Запустить горутину очень просто:
go normalFunc(args...)

Функция normalFunc(args...) начнет выполняться асинхронно с вызвавшим ее кодом.

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

Сколько вешать в граммах?

Чтобы было проще ориентироваться, рассмотрим цифры полученные опытным путем.
Читать дальше →
Total votes 14: ↑11 and ↓3+8
Comments15

Понимание типов сервисов в AngularJS (constant, value, factory, service, provider)

Reading time6 min
Views191K
Ангуляр поставляется с различными видами служб или сервисов, каждый из которых применяется в своей ситуации.
Имейте в виду, что сервисы, не зависимо от типа, это всегда синглтоны (одиночки).

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

Перейдем к типам сервисов
Читать дальше →
Total votes 28: ↑28 and ↓0+28
Comments37

Сегодня Twitch начнёт попытку установить Arch Linux

Reading time2 min
Views25K

Авторы описывают эксперимент как «коллективную текстовую хоррор-игру»



Заглушка канала в ожидании трансляции

Сегодня, 31 октября, в 23:00 по московскому времени будет запущен эксперимент на видеостриминговой платформе Twtich.tv. Зрители канала Twitch Installs Arch Linux попытаются установить операционную систему Arch Linux. Видео происходящего будет транслироваться на сайте. Раз в десять секунд в чате будет выбираться самое популярное нажатие клавиши, а затем оно будет выполнено на виртуальной машине, на которую происходит установка.
Читать дальше →
Total votes 22: ↑19 and ↓3+16
Comments25

Дайджест интересных материалов из мира Drupal #14

Reading time5 min
Views9.2K
Мы собираем полезные статьи и свежие новости из мира Drupal и делимся с вами раз в месяц. Встречайте октябрьский выпуск!



По-русски


  1. Никита Малышев активно делится своим опытом работы с Drupal 8. Самая свежая заметка на данный момент: Drupal 8 Block Plugin API. Стоит обратить внимание, ведь уже вышел релиз Drupal 8 rc2.
  2. Неплохо поживает и форк друпала Backdrop. Егор Марценюк поделился портом темы Bootstrap на Backdrop CMS.
  3. Для тех, кто ещё не печатает команды драша на автомате, будет полезна заметка Автодополнение команд Drush.
  4. Возвращаясь непосредственно к друпалу, вечно актуальная тема создания сущностей из кода в блоге nightdevel.
  5. Там же вышла заметка о том, как реализовать выбор цвета из палитры в своей форме.
  6. Кажется, синее сердце скоро снова зажжётся на территории России: сибирское друпал-сообщество запланировало DrupalCamp Siberia в Новосибирске. Пока детали уточняются, вы можете отправить предварительную заявку со своими пожеланиями.


Drupal Lite


  1. В лучшей книге про Drupal 7 уже написано 6 глав. Очень рекомендуем!
  2. Ещё один проект на GitBook: набор полезных рекомендаций для разработчиков Drupal Organised.
  3. Важное видео для тех, кто только начинает работать с друпалом и потерялся в тысячах его модулей. Подробная текстовая версия на русском, хоть и немного устарела, но тоже подойдёт: 1, 2, 3.

Читать дальше →
Total votes 15: ↑13 and ↓2+11
Comments10

Обучаем сотрудников английскому: опыт Edison

Reading time7 min
Views30K

«Moving from the one-room schoolhouse to the one-world schoolhouse is now a reality» (Cisco Systems)


«One-room schoolhouse» — это американская сельская школа времен Марка Твена; в такой учился ещё Том Сойер — формат обучения, который до сих пор знаком каждому, кто ходил на какие-либо курсы, включая обучение английскому. Не слишком-то прогрессивно для мира облачных сервисов и глобальных видеоконференций?


Мы учились английскому у этого парня
Читать дальше →
Total votes 31: ↑23 and ↓8+15
Comments21

RailsClub 2015: Интервью c Андреем Дерябиным

Reading time3 min
Views3.7K
Привет!

Новое интервью! Сегодня на вопросы конференции RailsClub (которая состоится 26 сентября) ответил Андрей Дерябин, тимлид Злых Марсиан, автор Rove.io и со-ведущий Ruby NoName Podcast.

image
Читать дальше →
Total votes 10: ↑8 and ↓2+6
Comments0

Rust: как код может быть одновременно быстрым и безопасным. Рассказ Степана Кольцова в Яндексе

Reading time2 min
Views54K
Привет. Меня зовут Степан Кольцов. Недавно я выступал на Java Party в киевском офисе Яндекса с докладом про язык Rust, который несёт в себе очень много для будущего программирования. Некоторые коллеги утверждают, что я всегда говорю про Rust, когда у меня есть такая возможность. Сегодня я хочу поделиться этим рассказом с вами и объяснить, почему мне это кажется важным.



Для начала пара слов о том, что такое Rust. Последние 15 лет между разработчиками на Java и на C++ ведётся спор о том, какой язык программирования хуже — Java или C++. Программы на C++ глючат, падают, и в них утекает память. Программы на Java тормозят и требуют слишком много памяти.

Rust — новый современный язык программирования, разрабатываемый компанией Mozilla — решает проблемы Java и C++: программы, написанные на Rust, одновременно быстрые и безопасные. Rust является таким же низкоуровневым (в смысле close-to-metal) языком программирования, как и C++, однако в язык встроены конструкции, позволяющие на этапе компиляции доказывать, что в программе не случатся ошибки работы с памятью, как то обращение после использования, двойное удаление, использование неинициализированной памяти и т.п. В Rust для этого используется механизм borrowed pointers. Большая часть моего рассказа была посвящена описанию этого механизма.
Читать дальше →
Total votes 114: ↑109 and ↓5+104
Comments128

Тиристоры для чайников

Reading time3 min
Views802K
Добрый вечер хабр. Поговорим о таком приборе, как тиристор. Тиристор — это полупроводниковый прибор с двумя устойчивыми состояниями, имеющий три или больше взаимодействующих выпрямляющих перехода. По функциональности их можно соотнести к электронным ключам. Но есть в тиристоре одна особенность, он не может перейти в закрытое состояние в отличие от обычного ключа. Поэтому обычно его можно найти под названием — не полностью управляемый ключ.
Читать дальше →
Total votes 34: ↑22 and ↓12+10
Comments33

Как повысить рейтинг приложения в Google Play?

Reading time7 min
Views25K
Признаюсь, есть у меня одна вредная привычка. Когда на работе нужно спланировать продвижение мобильного приложения, я всегда забываю про оптимизацию описания для Google Play. Наверное, что-то в моем подсознании не считает Google Play таким же полноценным магазином приложений, как App Store. Кроме того, по разным оценкам, приложения на Android приносят меньше прибыли (в быту часто называют разницу в два раза, последние данные от App Annie дают разницу в 70%), а многие уважающие себя разработчики отличных игр и приложений вообще не делают Android-версию или выпускают ее через какое-то время после iOS-версии, когда уже понятно, что она гарантированно поднимется в топ за счет разогретого желания «андроедов» наслаждаться всеми теми благами, которыми наслаждаются «яблоеды». (Впрочем, есть и исключения.)

Тем не менее, к нам постоянно обращаются какие-то отчаянные люди и просят сделать им ASO для Google Play. Ниже — список мер, которые могут помочь. Как говорится, спасение утопающих — дело рук самих утопающих.


Для начала пройдемся по основным факторам ранжирования приложения в поиске в Google Play.
Читать дальше →
Total votes 17: ↑16 and ↓1+15
Comments4

Введение в machine learning: с чего начать изучение и как применять

Reading time1 min
Views30K
image
Машинное обучение — это математическая дисциплина, изучающая алгоритмы способные выделять знания из данных. Несмотря на то, что эта дисциплина в основном теоретическая, в жизни большинства людей она с каждым годом играет все большую и большую роль. Так, сложно сейчас встретить человека, который бы ничего не слышал о торговых роботах, Яндексе, Google Street View, Siri.

В докладе коллеги Алексадра Сенова из проекта Synqera для очередного нашего технического i-Free meet-up проведен небольшой экскурс в машинное обучение. Из него мы узнаем чуть больше про области применения, рассмотрим основные задачи, возникающие в рамках машинного обучения, а так же алгоритмы их решения. Уделим внимание проблемам, возникающим при их применении, приведем пару примеров и рекоммендаций по дальнейшему изучению.

Подробности
Total votes 15: ↑11 and ↓4+7
Comments0

Дайджест интересных материалов из мира Drupal #11

Reading time5 min
Views7.2K
Всем привет!

Это одиннадцатый выпуск Drupal-дайджеста на хабре. Мы собираем полезные статьи и свежие новости из мира Drupal и делимся с вами раз в месяц.



По-русски


Наша любимая рубрика — друпал в рунете.

  1. «Вставка изображений в CKEditor» — подход, который использует @xandeadx, постоянный участник нашего дайджеста.
  2. silrage написал на хабр, как можно использовать Rules, один из столпов друпала, для ограничения доступа к материалу. И хотя поначалу Rules может показаться сложным и громоздким решением, впоследствии изучение этого инструмента окупится сполна.
  3. Автор блога tlito.ru изучает друпал в прямом эфире, записывая свои наблюдения в блог. Вот пара заметок для примера: блокирование пользователей по IP, перемещение модулей в папку sites/all/modules.
  4. Андрей Малеев написал подробно о токенах: зачем нужны, как использовать и расширять.
  5. Разработчики dru.io ведут всю разработку сайта сообщества открыто на гитхабе и делятся своим опытом с нами. Александр Дубовской про то, как деплоить Views без Features.
  6. Там же Chi анонсировал легкий генератор кода для Drupal.
  7. И последнее с Dru.io на сегодня: Drupal foreign key на уровне БД.
  8. Вышла вторая часть большого сравнения производительности MySQL и PostgeSQL. Как всегда в таких вопросах, однозначного ответа нет. Автор, похоже, остановился на постгрес.

Читать дальше →
Total votes 15: ↑10 and ↓5+5
Comments4

Запускаем источник пассивного дохода на Raspberry Pi: Мастернода Dash

Reading time4 min
Views61K
Чем привлекателен запуск Мастерноды Dash в качестве источника пассивного дохода для держателей криптовалюты Dash?

Во-первых, Мастерноду можно запустить даже на простейшем микрокомпьютере Raspberry Pi, очень маленьком и дешёвом (альтернативное решение — её можно запускать на выделенном сервере или VPS).
А во-вторых, владелец Мастерноды получает вознаграждение за поддержание работы сети Dash, которое на текущий момент приносит 17% годовых (в DASH).



Читать дальше →
Total votes 25: ↑17 and ↓8+9
Comments19

Знакомство с Koa или coroutine в nodejs

Reading time5 min
Views33K

Предисловие


Меня уже очень давно привлекает javascript в качестве единого языка для веб-разработки, но до недавнего времени все мои изыскания оканчивались чтением документации nodejs и статей о том, что это callback`овый ад, что разработка на нем приносит лишь боль и страдания. Пока не обнаружил, что в harmony появился оператор yield, после чего я наткнулся на koa, и пошло поехало.
Читать дальше →
Total votes 37: ↑33 and ↓4+29
Comments12

Критическое обновление безопасности для node.js и io.js

Reading time2 min
Views8.5K
4 июля, вышло обновление безопасности с исправлением критической уязвимости для node.js и io.js. Суть уязвимости в том, что при конвертации буфера в UTF8 строку приложение может «упасть».

Привожу мой свободный перевод текста официального сообщения:

Во-первых, очевидно, что решение проблемы не идеально, но оно поможет нам сэкономить время на разработку лучшего решения. В США сейчас вечер и сейчас выходные, связанные с 4 июля (День независимости США).

Мы призываем обновится, потому что детали об уязвимости и потенциале использования ненароком оказались на публичном форуме. Итак, мы предпочти дать компаниям и пользователям инструмент для защиты своих проектов и смягчения DoS атак, если таковые случатся. Потому что лучше встретиться с реальностью, нежели сидеть скрестив пальцы. Время поджимает, особенно для США, где сейчас праздники, что делает это все кошмаром для людей, развертывающих больший проекты. Но этот призыв мы делаем с полезной информацией.
Читать дальше →
Total votes 18: ↑14 and ↓4+10
Comments7

Information

Rating
Does not participate
Location
London, England - London, Великобритания
Date of birth
Registered
Activity