Под катом — перевод статьи опытного разработчика о его опыте практического применения Go. Важно — мнение переводчика может не совпадать с мнением автора статьи.
Александр @AlexDodonov
User
Путеводитель по методам класса java.util.concurrent.CompletableFuture
7 min
90KПоявившийся в Java8 класс CompletableFuture — средство для передачи информации между параллельными потоками исполнения. По существу это блокирующая очередь, способная передать только одно ссылочное значение. В отличие от обычной очереди, передает также исключение, если оно возникло при вычислении передаваемого значения.
Класс содержит несколько десятков методов, в которых легко потеряться. Данная статья классифицирует эти методы по нескольким признакам, чтобы в них было легко ориентироваться.
Класс содержит несколько десятков методов, в которых легко потеряться. Данная статья классифицирует эти методы по нескольким признакам, чтобы в них было легко ориентироваться.
+22
Почему команда SoundCloud перешла на микросервисы
4 min
31KРанее мы уже рассказывали о дата-центре фотосервиса imgix, описывали детективную историю поиска проблем с SSD-дисками проекта Algolia, а сегодня представляем вашему вниманию обсуждение того, как команда стримингового сервиса SoundCloud перешла на использование микросервисов.
+34
Робокурс: обучаем детей программированию и робототехнике
5 min
17KКак то на юге седой старец дал мне совет как выбирать арбуз. Он сказал, что выбирать надо не арбуз, а продавца. Пока курсы робототехники ведут люди, выбирать надо людей. Я знаю с десяток преподавателей робототехники из разных школ и городов. Хочется рассказать про один кружок, который мне особенно понравился.
Когда я писал материал про FISCHERTECHNIK, я познакомился с замечательными людьми из детского центра инженерного творчества РОБОКУРС и побывал на одном занятии в этом центре. Потом было несколько посиделок за чаем, разговор про старые советские книги (кто помнит «Программышку»?), узнал много нового про историю блок-схем (кто знает в каком году их изобрели?), про кремниевую долину, кибернетику и будущее образования.
Видя с каким железом ловко управляются гики-малявки, возникла легкая зависть, что у них есть такие курсы. Ничего, зато у нас были видеосалоны, пистоны и пейджеры. В моем детстве было успехом прикрутить к куску пенопласта вот такой моторчик
Как раз первое сентября, мне захотелось поделиться чем-то полезным с читателями и я привожу часть моей беседы с основателем и преподавателем Робокурса. Чему учить детей, чтобы у них получился не Т-800 (или не дай бог T-1000), а как минимум TARS.
Рассказывает Григорий Зайцев, соучредитель компании.
Откуда взялся РОБОКУРС?
+14
Теория категорий для программистов: предисловие
5 min
108KTranslation
Вот уже некоторое время я обдумываю идею написать книгу о теории категорий для программистов. Не компьютерных теоретиков, программистов — скорее инженеров, чем ученых. Я знаю, что это звучит безумно, и я сам достаточно напуган. Я знаю, что есть огромная разница между наукой и техникой, потому, что я работал по обе стороны баррикад. Но у меня всегда был очень сильный порыв объяснить вещи. Я восхищаюсь Ричардрм Фейнманом, который был мастером простых объяснений. Я знаю, я не Фейнман, но я буду стараться изо всех сил. Я начинаю с публикации этого предисловия, которое должно мотивировать читателя изучить теорию категорий, и надеюсь на начало дискуссии и обратную связь.
Я постараюсь в нескольких параграфах убедить вас, что эта книга написана для вас, и развеять все ваши сомнения в необходимости изучения этой, одной из самых абстрактных областей математики, в свое драгоценное свободное время.
Я постараюсь в нескольких параграфах убедить вас, что эта книга написана для вас, и развеять все ваши сомнения в необходимости изучения этой, одной из самых абстрактных областей математики, в свое драгоценное свободное время.
+47
15 лучших JavaScript-библиотек для построения диаграмм и сводных таблиц
6 min
308KTranslation
Практически невозможно представить себе информационную панель без диаграмм и графиков. Они быстро и эффективно отображают сложные статистические данные. Более того, хорошая диаграмма также улучшает общий дизайн вашего сайта.
В этой статье я покажу вам некоторые из лучших JavaScript библиотек для построения диаграмм/схем (и сводных таблиц). Эти библиотеки помогут вам в создании красивых и настраиваемых графиков для ваших будущих проектов.
Хотя большинство библиотек являются бесплатными и свободно распространяемыми, для некоторых из них есть платные версии с дополнительным функционалом.
В этой статье я покажу вам некоторые из лучших JavaScript библиотек для построения диаграмм/схем (и сводных таблиц). Эти библиотеки помогут вам в создании красивых и настраиваемых графиков для ваших будущих проектов.
Хотя большинство библиотек являются бесплатными и свободно распространяемыми, для некоторых из них есть платные версии с дополнительным функционалом.
+59
Как разработчики сидели в Петербурге и тихо ели грибы, а потом написали ОС для систем хранения данных
8 min
155KВ конце 2008 года на тогда ещё небольшую петербуржскую компанию вышел один западный медиахолдинг примерно так:
— Это вы там упоролись по хардкору и приспособили SSE-инструкции для реализации кода Рида-Соломона?
— Да, только мы не…
— Да мне пофиг. Хотите заказ?
Проблема была в том, что видеомонтаж требовал адовой производительности, и тогда использовались RAID-5 массивы. Чем больше дисков в RAID-5 — тем выше была вероятность отказа прямо во время монтажа (для 12 дисков — 6%, а для 36 дисков — уже 17-18%). Дроп диска при монтаже недопустим: даже если диск падает в хайэндовой СХД, скорость резко деградирует. Медиахолдигу надоело с криком биться головой о стену каждый раз, и поэтому кто-то посоветовал им сумрачного русского гения.
Много позже, когда наши соотечественники подросли, возникла вторая интересная задача — Silent Data Corruption. Это такой тип ошибок хранения, когда на блине одновременно меняется и бит в основных данных, и контрольный бит. Если речь о видео или фотографии — в целом, никто даже не заметит. А если речь про медицинские данные, то это становится диагностической проблемой. Так появился специальный продукт под этот рынок.
Ниже — история того, что они делали, немного математики и результат — ОС для highload-СХД. Серьёзно, первая русская ОС, доведённая до ума и выпущенная. Хоть и для СХД.
+191
Проблемы даты и времени в JS
3 min
87KРедкому программисту случается избежать работы с датой и временем. Вообще, дата/время — базовое понятие и в основной массе языков существуют встроенные механизмы работы с этим типом данных. Казалось бы, JS не исключение, есть встроенный тип Date, есть куча функций в прототипе, однако…
+24
Структуры данных: 2-3 куча (2-3 heap)
4 min
50KВопрос эффективного способа реализации очереди с приоритетом некоторой структурой данных остается актуальным в течении долгого времени. Ответ на данный вопрос всегда является неким компромиссом между объёмом памяти, необходимым для хранения данных и временем работой операций над очередью.
В компьютерных науках для эффективной реализации очереди с приоритетом используются структуры в виде кучи.
В компьютерных науках для эффективной реализации очереди с приоритетом используются структуры в виде кучи.
+34
Первый взгляд на Apple Watch SDK
7 min
21KTranslation
Анонсированный в июне и только что вышедший Apple Watch SDK вызвал много споров и вопросов. Первая версия имеет ограниченную функциональность, и не за горами выход версии 2.0, нужно подождать ещё несколько месяцев. Впечатления от нового SDK у разработчиков сложились разные. Одни разочарованы большим количеством ограничений, другие, напротив, впечатлены самим фактом выхода. Есть и «прослойка» тех, кто принял новый продукт достаточно сдержанно. Но в любом случае подавляющее большинство разработчиков рады выходу новой интересной забавы.
+28
«Математика – один из видов искусства»: пост к столетию со дня рождения Мартина Гарднера
3 min
59KTutorial
Translation
Перевод поста Эда Пегга Младшего (Ed Pegg Jr) "Martin Gardner’s 100th Birthday"
Я думаю, содержание этого поста будет интересно всем, кто любит математику и ее красоту, всем, кто знаком с замечательными книгами и задачами Мартина Гарднера, а также будет полезно учителям, школьникам и студентам. Все ссылки в данном посте ведут на сайты Wolfram Demonstrations Project (коллекция бесплатных интерактивных демонстраций, созданных пользователями системы Mathematica на языке Wolfram Language с помощью технологии Computable Document Format (CDF), при этом для вас доступны исходные коды всех демонстраций, а значит, вы можете каждую из них скачать, изучить и изменить под себя) и Wolfram MathWorld (крупнейшая и самая авторитетная онлайн-энциклопедия по математике).
+72
За один проход
7 min
155KСреди задач по программированию часто попадаются такие: дана последовательность однотипных элементов (обычно это числа), требуется за один проход по ней найти какую-нибудь характеристику (среднее квадратическое отклонение, количество минимальных элементов, непрерывный участок с наибольшей суммой...) Дополнительное ограничение — последовательность может быть очень длинной, и в память не поместится. Других ограничений на элементы последовательности, обычно, не накладывается.
С этими задачами всё, более или менее, понятно: нужно найти то, что на мехмате МГУ называют «индуктивным расширением» искомой функции, и реализовать её вычисление. Если найти не удалось (требуемый объём памяти слишком велик), то задача не решается.
Но попадаются и другие задачи. В них есть дополнительные ограничения на элементы последовательности в совокупности, и эти ограничения приходится существенно использовать для решения (и проверять их не надо). Простейшая такая задача выглядит так:
Задача 1. В последовательности записаны целые числа от 1 до N в произвольном порядке, но одно из чисел пропущено (остальные встречаются ровно по одному разу). N заранее неизвестно. Определить пропущенное число
Решение очевидно: просматриваем числа, находим их количество K и сумму S. По условию, N=K+1, значит, сумма чисел от 1 до N будет равна (K+1)*(K+2)/2, и пропущенное число равно (K+1)*(K+2)/2-S. Если вы почему-то боитесь переполнений, то работайте с беззнаковыми числами (там переполнения не страшны — но будьте осторожны при вычислении (K+1)*(K+2)/2 :) ), или вместо суммы ищите XOR всех чисел.
С этими задачами всё, более или менее, понятно: нужно найти то, что на мехмате МГУ называют «индуктивным расширением» искомой функции, и реализовать её вычисление. Если найти не удалось (требуемый объём памяти слишком велик), то задача не решается.
Но попадаются и другие задачи. В них есть дополнительные ограничения на элементы последовательности в совокупности, и эти ограничения приходится существенно использовать для решения (и проверять их не надо). Простейшая такая задача выглядит так:
Задача 1. В последовательности записаны целые числа от 1 до N в произвольном порядке, но одно из чисел пропущено (остальные встречаются ровно по одному разу). N заранее неизвестно. Определить пропущенное число
Решение очевидно: просматриваем числа, находим их количество K и сумму S. По условию, N=K+1, значит, сумма чисел от 1 до N будет равна (K+1)*(K+2)/2, и пропущенное число равно (K+1)*(K+2)/2-S. Если вы почему-то боитесь переполнений, то работайте с беззнаковыми числами (там переполнения не страшны — но будьте осторожны при вычислении (K+1)*(K+2)/2 :) ), или вместо суммы ищите XOR всех чисел.
+71
Postgres. Выборка N случайных записей
6 min
36KПри работе над одним проектом возникла необходимость написать некое подобие тестовой системы. Задача формулировалась примерно так:
А теперь то же самое человеческим языком: из таблицы нужно два раза выбрать по 3-5 случайных записей. При этом не должно быть дубликатов и выборка должна происходить случайным образом.
Первое, что приходит в голову:
И это даже будет работать. Вот только цена такого решения…
- из N записей в базе необходимо выбрать m (3-5) случайных строк в серии из k выборок (преимущественно k=2).
А теперь то же самое человеческим языком: из таблицы нужно два раза выбрать по 3-5 случайных записей. При этом не должно быть дубликатов и выборка должна происходить случайным образом.
Первое, что приходит в голову:
SELECT *
FROM data_set
WHERE id NOT IN (1,2,3,4, 5)
ORDER BY random()
LIMIT 5;
И это даже будет работать. Вот только цена такого решения…
+46
Макросы и квазицитаты в Scala 2.11.0
8 min
13KНе так давно состоялся релиз Scala 2.11.0. Одним из примечательных нововведений этой версии являются квазицитаты — удобный механизм для описания синтаксических деревьев Scala с помощью разбираемых во время компиляции строк; очевидно, что в первую очередь этот механизм предназначен для использования совместно с макросами.
Удивительно, но на хабре пока тему макросов в Scala рассматривают не слишком-то активно; последний пост
с серьёзным рассмотрением макросов был аж целый год назад.
В данном посте будет подробно рассмотрено написание простого макроса, предназначенного для генерации кода десериализации JSON в иерархию классов.
Удивительно, но на хабре пока тему макросов в Scala рассматривают не слишком-то активно; последний пост
с серьёзным рассмотрением макросов был аж целый год назад.
В данном посте будет подробно рассмотрено написание простого макроса, предназначенного для генерации кода десериализации JSON в иерархию классов.
+25
FAQ по программированию под Android от новичка, и для новичков
16 min
158KПредисловие к FAQ.
Программирование является моим хобби уже давно (правда на других языках и платформах), но до андроида руки дотянулись совсем недавно. Прошло несколько этапов, прежде чем я добрался до написания программ.
Сначала была пара месяцев посвященных Java, на сайте с «Сгибателем».
После, долгие попытки подружится с Eclipse, закончившиеся побегом на Android Studio.
На данный момент выпущено 7 программ и две находятся в разработке.
Данная подборка возникла как попытка структурирования и оптимизации полученной в процессе информации.
Заранее извиняюсь за возможно некорректную терминологию – так как практикую обучение через создание, и в теоретической части есть пробелы.
Надеюсь, что приведенные примеры окажутся полезными.
Программирование является моим хобби уже давно (правда на других языках и платформах), но до андроида руки дотянулись совсем недавно. Прошло несколько этапов, прежде чем я добрался до написания программ.
Сначала была пара месяцев посвященных Java, на сайте с «Сгибателем».
После, долгие попытки подружится с Eclipse, закончившиеся побегом на Android Studio.
На данный момент выпущено 7 программ и две находятся в разработке.
Данная подборка возникла как попытка структурирования и оптимизации полученной в процессе информации.
Заранее извиняюсь за возможно некорректную терминологию – так как практикую обучение через создание, и в теоретической части есть пробелы.
Надеюсь, что приведенные примеры окажутся полезными.
+82
Работа для программиста в США: 5 простых шагов
5 min
291K Статья про то, что делать тем, кто хочет переехать работать в США. Я предполагаю инженерные позиции, на которые проще всего получить визы, но, возможно, статья окажется полезна и другим специалистам.
Мой опыт несколько отличается от нижеописанного (я попала на работу в США после стажировки). Но за 4 года в США пообщалась с людьми, которые попали сюда разными путями и набрала кое-какой опыт. Так что если бы я очень хотела найти работу в США сегодня, то я бы действовала примерно так, как описано ниже.
Заранее извиняюсь, если мой тон кому-то покажется наставническим — я не имею амбиций учить других жизни, просто иногда у меня получается такой стиль.
Мой опыт несколько отличается от нижеописанного (я попала на работу в США после стажировки). Но за 4 года в США пообщалась с людьми, которые попали сюда разными путями и набрала кое-какой опыт. Так что если бы я очень хотела найти работу в США сегодня, то я бы действовала примерно так, как описано ниже.
Заранее извиняюсь, если мой тон кому-то покажется наставническим — я не имею амбиций учить других жизни, просто иногда у меня получается такой стиль.
+138
Айтишник на отдыхе: добавим немного астрономии?
6 min
125KСтремительно приближается лето и сопутствующие ему выезды на природу. Посиделки затягиваются заполночь, и над головой появляются звезды. Но, как правило, зведное небо таинственно и непонятно — астрономию в школах не преподают толком, наверное, уже с конца 80-х, да и кто помнит, чему его учили в школе, если это не использовалось в жизни постоянно? А в небе хватает интересного, особенно если потратить чуть-чуть времени на астрономическое обеспечение выезда на природу.
+101
ASUS Network iControl — удалить нельзя помиловать
1 min
59KЯ потратил на решение этой проблемы 2 месяца. В вялом режиме гуглил, спрашивал в IRC… наверное, я безнадёжный ламер. Но я хотел бы сохранить время другим людям, поэтому пишу сюда.
+50
История операционных систем Apple. Часть 2. Взлет Macintosh
11 min
135KTranslation
Продолжаем знакомиться с историей операционных систем Apple. Сегодня Lisa, Macintosh вплоть до System 7 и ранние попытки использовать Unix.
Первая часть: habrahabr.ru/post/194696
Apple представил компьютер Lisa в январе 1983 года, за год до Макинтоша. Стартовая цена составляла $9995. Сердцем новинки был 32-битный процессор Motorola 68000. При создании разработчики явно вдохновлялись Xerox PARC, см. habrahabr.ru/post/194696. Этому способствовала договоренность между Xerox и Apple — акции в обмен на технологию. Следует заметить, что проект Lisa начали еще до причащения к PARC. В целом непонятно, какие именно идеи позаимствовали у Xerox, а какие изобрели своими силами.
Lisa Office System (OS), операционная система этого компьютера, имела полностью графический интерфейс. Был файловый менеджер с иконками, при клике запускалось соответствующее приложение. В комплекте также был табличный процессор LisaCalc, программа для рисования диаграмм LisaGraph, продвинутый редактор списков LisaList, менеджер проектов LisaProject, рисовалка LisaDraw, эмулятор ANSI терминала LisaTerminal и т. д. Кроме того, на Lisa поддерживалась работа SCO Xenix.
Первая часть: habrahabr.ru/post/194696
Приход графики
Apple представил компьютер Lisa в январе 1983 года, за год до Макинтоша. Стартовая цена составляла $9995. Сердцем новинки был 32-битный процессор Motorola 68000. При создании разработчики явно вдохновлялись Xerox PARC, см. habrahabr.ru/post/194696. Этому способствовала договоренность между Xerox и Apple — акции в обмен на технологию. Следует заметить, что проект Lisa начали еще до причащения к PARC. В целом непонятно, какие именно идеи позаимствовали у Xerox, а какие изобрели своими силами.
Lisa OS
Lisa Office System (OS), операционная система этого компьютера, имела полностью графический интерфейс. Был файловый менеджер с иконками, при клике запускалось соответствующее приложение. В комплекте также был табличный процессор LisaCalc, программа для рисования диаграмм LisaGraph, продвинутый редактор списков LisaList, менеджер проектов LisaProject, рисовалка LisaDraw, эмулятор ANSI терминала LisaTerminal и т. д. Кроме того, на Lisa поддерживалась работа SCO Xenix.
+130
История Nintendo во главе с Хироси Ямаути
4 min
83KТри дня назад от пневмонии скончался экс-президент Nintendo Хироси Ямаути, проработавший в этой должности с 1949 по 2002 год — то есть целых 53 года.
За это время Nintendo превратилась из производителя игральных карт в видеоигровую компанию с мировым именем и мультимиллиардными оборотами.
Давайте вспомним, что происходило с Nintendo в то время, когда во главе компании стоял Хироси Ямаути — вспомним о Donkey Kong, Super Mario, Game Boy и многих других играх, а также о таких игрушках, как радиоуправляемый пылесос и аппарат для производства сахарной ваты в домашних условиях.
За это время Nintendo превратилась из производителя игральных карт в видеоигровую компанию с мировым именем и мультимиллиардными оборотами.
Давайте вспомним, что происходило с Nintendo в то время, когда во главе компании стоял Хироси Ямаути — вспомним о Donkey Kong, Super Mario, Game Boy и многих других играх, а также о таких игрушках, как радиоуправляемый пылесос и аппарат для производства сахарной ваты в домашних условиях.
+85
Information
- Rating
- Does not participate
- Location
- Санкт-Петербург и область, Россия
- Date of birth
- Registered
- Activity