Search
Write a publication
Pull to refresh
-1
0
Send message

Визуализация concurrency в Go с WebGL

Reading time12 min
Views38K
Одной из самых сильных сторон языка программирования Go является встроенная поддержка concurrency, основанная на труде Тони Хоара «Communicating Sequential Processes». Go создан для удобной работы с многопоточным программированием и позволяет очень легко строить довольно сложные concurrent-программы. Но задумывались ли вы когда-нибудь, как выглядят различные паттерны concurrency визуально?

Конечно, задумывались. Все мы, так или иначе, мыслим визуальными образами. Если я попрошу вас о чём-то, что включает числа «от 1 до 100», вы мгновенно их «увидите» в своей голове в той или иной форме, вероятно даже не отдавая себе в этом отчёт. Я, к примеру, ряд от 1 до 100 вижу как линия с числами уходящая от меня, поворачивающая на 90 градусов вправо на числе 20 и продолжающая до 1000+. И, покопавшись в памяти, я вспоминаю, что в самом первом детском саду в раздевалке вдоль стены были написаны номерки, и число 20 было как-раз в углу. У вас же, вероятно, какое-то свое представление. Или вот, другой частый пример — представьте круглый год и 4 сезона года — кто-то их видит как квадрат, каждая грань которого принадлежит сезону, кто-то — как круг, кто-то ещё как-то.

Так или иначе, позвольте мне показать мою попытку визуализировать основные паттерны concurrency с помощью Go и WebGL. Эти интерактивные визуализации более-менее отражают то, как я вижу это в своей голове. Интересно будет услышать, насколько это отличается от визуализаций читателей.

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

Лучшие бесплатные коллекции векторных иконок

Reading time2 min
Views348K
Привет, Хабр! Сегодня я хочу представить вам огромную коллекцию из 51 набора бесплатных векторных иконок. Да, есть потрясающие ресурсы Flaticon или Iconfinder, но бывают случаи, когда необходима именно группа иконок в едином стилистическом оформлении. Определиться с выбором, вам поможет эта подборка. Я старался собрать не как можно больше, а действительно самое лучшее.

Среди веб-разработчиков существует много споров о том, что лучше: иконочный шрифт или SVG спрайты? Четкого ответа на этот вопрос нет. Каждый выбирает свое. Данные наборы иконок вас неограничиывают в выборе, поскольку представлены в различных форматах: @font-face, SVG, EPS, AI, PSD, Sketch.

В целом данная подборка содержит более 10 000 иконок, охватывающих множество категорий: интерфейсы, технологии, наука, спорт, маркетинг, среда, транспорт и тд. Полые, заполненные, цветные, во Flat, Material, Elegant, Cartoon, Hand drawing стилях.

Responsive Icons (100 иконок, PSD, AI, EPS, SVG)


Responsive Icons

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

С-вызовы в Go: принцип работы и производительность

Reading time14 min
Views25K

Язык Go в последнее время неоднократно обсуждался на хабре — его и критиковали , и хвалили. Мы в Intel любим Go и участвуем в open-source разработке этого проекта. Если вы тоже используете Go, интересуетесь его внутренним строением и вопросами наиболее эффективного программирования на этом замечательном языке, то добро пожаловать под кат. Статья будет о том, каким образом в Go реализован механизм внешних вызовов, и насколько быстро он работает.
Читать дальше →

В игровом клиенте от Origin появилась возможность подписки

Reading time2 min
Views10K
Electronic Arts Inc. первой сделала шаг по продвижению подписки на библиотеку своих игр на ПК/MAC*. В игровом клиенте Origin презентована функция The Vault, которая позволяет пользователям оформить подписку за 249 рублей в месяц и получить доступ к, на текущий момент, 15 играм.



Впрочем, соблюдая «традиции» и несмотря на то что заявление, что будут доступны полные версии игр, это верно лишь от части. Например, Battlefield 4 доступен в версии «Эксклюзивное цифровое издание» и не содержит в себе дополнений и возможностей полной версии «Premium», кроме заявленного дополнения China Rising. Полные версии игр, возможно, так и останутся недоступны.
Читать дальше →

Read & Comment на «Гиктаймс»

Reading time2 min
Views25K
image

18 января мы в экспериментальном режиме запустили на «Мегамозге» новый тип аккаунтов — read & comment, позволяющий зарегистрированным пользователям комментировать новые публикации. Признаться честно, мы очень переживали и внимательно следили за тем, как это нововведение повлияет на жизнь сообщества: все-таки менять что-то в исправно работающей системе — дело опасное, можно и поломать все ненароком.

Прошла неделя, мы оценили результаты эксперимента и…
И что же?! Не томите!

Кроссплатформенный Open Source Time Tracker

Reading time7 min
Views71K

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

Атака клонов: Современные технологии ботовождения

Reading time35 min
Views12K
«Сейчас вы напишите самую сложную в своей жизни программу, которая будет просто складывать два числа»
Рыжова Ирина Михайловна


Интеллектуально-азартные онлайн-игры – лакомый кусок для ботоводов. Даже если разработчики игрового софта тратят большие деньги на отлов ботов, – как в онлайн покер-румах, например – всё равно велика вероятность наткнуться на «умного бота», игра с которым будет в одни ворота. Особенно, если бот абсолютное неуязвим… Ибо никакие деньги не защитят систему, через которую проходят большие деньги.


Рис. 1. Ботоводы наступают


Скрытая угроза


Интеллектуально-азартные онлайн-игры – небезопасны. В особенности небезопасны те из них, где вращаются живые деньги. Их небезопасность проявляется прежде всего в том, что невозможно знать наверняка, с кем играешь: с живым человеком, или же с – ботом. Во втором случае игра будет в одни ворота. В играх «на интерес», – шахматы и шашки на маил.ру, к примеру, – владельцы онлайн-игр смотрят на ботовождение сквозь пальцы. В многопользовательских онлайн-играх, где в какой-то степени фигурируют живые деньги, отлову ботов уделяется несколько большее внимание. Однако даже если подходить к пресечению ботоводства в высшей степени серьёзно – как это например сделано в онлайн покер-румах – всё равно велика вероятность наткнуться на бота.

Разработчики софта для игры в покер тратят большие деньги на разоблачение ботов, и тем не менее, ботоводство в онлайн-покере процветает. Ибо никакие деньги не смогут защитить систему, через которую проходят большие деньги. Ботоводы и ловцы ботов, – анализируя уловки оппонентов и принимая соответствующие контрмеры, – попеременно одерживают победу. Кто-то может думать, что битве между ними никогда не будет конца. Однако, существует схема безопасного ботовождения, перед которой ловцы ботов – пасуют. Она интересна тем, что даже если «борцы за справедливость» будут иметь на руках подробно прокомментированные исходные коды бота, они не смогут установить факт его использования. Реализация данной схемы – мероприятие дорогостоящее, однако поскольку потенциальная выгода велика, схема вполне актуальна.

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

Деанонимизация программиста возможна не только через исходный код, но и через скомпилированный бинарный файл

Reading time2 min
Views31K
Не секрет, что многие разработчики программного обеспечения с открытым исходным кодом и не только, по разным причинам желают сохранить свою анонимность. Совсем недавно группа исследователей опубликовала работу, в которой описываются методы деанонимизации программиста по его стилю кодирования через анализ исходных кодов. Авторы утверждают, что им удалось достигнуть средней точности идентификации в 94%.

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


В своей новой работе, исследователи продемонстрировали, что деанонимизация возможна и через анализ уже скомпилированных бинарных файлов в отсутствии исходных кодов (видео презентации доклада). В этот раз для исследования использовались исходные коды 600 участников Google Code Jam, которые были скомпилированы в исполняемые файлы, а потом подвергались разбору. Благодаря тому, что задания на соревнованиях были одинаковы для всех, разница файлов заключалась в значительной степени именно в стиле программирования, а не в алгоритме. Изначально, при сборке бинарных файлов отключались оптимизации компилятора и не применялась обфускация исходных кодов. Но, как утверждают авторы работы, некоторые отличительные признаки сохраняются и при применении этих способов сокрытия авторства, снижая точность деанонимизации до 65%.
Читать дальше →

Verone — статический анализатор для C++ с анализом на лету

Reading time6 min
Views18K
Меня зовут Владимир Пляшкун и в сегодняшней статье я собираюсь представить бесплатный статический анализатор Verone для C++03/C++11/C++14, главной особенностью которого является анализ на лету.
Читать дальше →

«Страшные» абстракции Haskell без математики и без кода (почти). Часть I

Reading time31 min
Views48K
— Для чего нужны монады?
— Для того, чтобы отделить чистые вычисления от побочных эффектов.
(из сетевых дискуссий о языке Haskell)

Шерлок Холмс и доктор Ватсон летят на воздушном шаре. Попадают в густой туман и теряют ориентацию. Тут небольшой просвет — и они видят на земле человека.
— Уважаемый, не подскажете ли, где мы находимся?
— В корзине воздушного шара, сэр.
Тут их относит дальше и они опять ничего не видят.
— Это был математик, – говорит Холмс.
— Но почему?
— Его ответ совершенно точен, но при этом абсолютно бесполезен.
(анекдот)

Когда древние египтяне хотели написать, что они насчитали 5 рыб, они рисовали 5 фигурок рыб. Когда они хотели написать, что насчитали 70 людей, они рисовали 70 фигурок людей. Когда они хотели написать, что насчитали в стаде 300 овец, они… — ну, в общем, вы поняли. Так и мучились древние египтяне, пока самый умный и ленивый из них не увидел нечто общее во всех этих записях, и не отделил понятие количества того, что мы подсчитываем, от свойств того, что мы подсчитываем. А потом другой умный ленивый египтянин заменил множество палочек, которыми люди обозначали количество, на значительно меньшее количество знаков, короткой комбинацией которых можно было заменить огромное количество палочек.

То, что сделали эти умные ленивые египтяне, называется абстракцией. Они подметили нечто общее, что свойственно всем записям о количестве чего-либо, и отделили это общее от частных свойств подсчитываемых предметов. Если вы понимаете смысл этой абстракции, которую мы сегодня называем числами, и то, насколько она облегчила жизнь людям, то вам не составит труда понять и абстракции языка Haskell — все эти непонятные, на первый взгляд, функторы, моноиды, аппликативные функторы и монады. Несмотря на их пугающие названия, пришедшие к нам из математической теории категорий, понять их не сложнее, чем абстракцию под названием «числа». Для их понимания совершенно не требуется знать ни теорию категорий, ни даже математику в объёме средней школы (арифметики вполне достаточно). И объяснить их тоже можно, не прибегая к пугающим многих математическим понятиям. А смысл абстракций языка Haskell точно такой же, как и у чисел — они значительно облегчают программистам жизнь (и вы пока даже не представляете, насколько!).
Читать дальше →

Zotero: оптимизация хранения и использования научной литературы

Reading time6 min
Views57K


Не буду распространяться о преимуществах использования библиографических менеджеров. На дворе 2015 год. Тема не раз обсуждалась на Хабре.

Здесь подробно описываются все прелести использования библиографического менеджера на примере Mendeley (это один из главных конкурентов Zotero, сравнение позже в этой статье). Здесь любопытно представлена система Citavi. Вроде бы, все в ней неплохо, но платить за софт приличные деньги, когда есть прекрасные бесплатные аналоги — развлечение на любителя. Кстати, от души рекомендую почитать комментарии к этой статье — познавательнее иных опусов. Здесь автор библиографического менеджера SciRef предлагает получить программку бесплатно.

Существует огромное множество различных библиографических менеджеров (см. таблицу в подвале, источник).

Сравнительная таблица библиографических менеджеров



Разумеется, при таком многообразии глупо говорить об одном идеальном решении. В этой статье я хочу рассказать вам о решении, которым пользуюсь и которое устраивает меня почти полностью. Как видно из названия статьи, это Zotero.
Читать дальше →

Пример решения типичной ООП задачи на языке Go

Reading time9 min
Views38K
Недавно попалась на глаза занимательная статья с аналогичным названием о языке Haskell. Автор предлагал читателю проследить за мыслью программиста, решающего типичную ООП задачу но в Хаскеле. Помимо очевидной пользы расширения представлений читателей о том, что ООП — это отнюдь не «классы» и «наследование», подобные статьи полезны для понимания того, как правильно пользоваться языком. Предлагаю читателю решить ту же самую задачу, но на языке Go, в котором ООП тоже реализован непривычно.
Читать дальше →

Пример решения типичной ООП задачи на языке Haskell

Reading time6 min
Views26K
Рассмотрим типичную задачу, из тех, что обычно считаются «ООП-эшными». Имеется список данных (объектов) имеющих не одинаковые структуры (по научному, гетерогенный список), при чём, над каждым нужно выполнять одинаковые действия – по простому, каждый можно передать в некую функцию.
Читать дальше →

Поиск с помощью регулярных выражений может быть простым и быстрым

Reading time21 min
Views49K
В этой статье мы рассмотрим два способа поиска с помощью регулярных выражений. Один широко распространён и используется в стандартных интерпретаторах многих языков. Второй мало где применяется, в основном в реализациях awk и grep. Оба подхода сильно различаются по своей производительности:



В первом случае поиск занимает A?nAn времени, во втором — An.

Степени обозначают повторяемость строк, то есть A?3A3 — это то же самое, что и A?A?A?AAA. Графики отражают время, требуемое для поиска через регулярные выражения.

Обратите внимание, что в Perl для поиска строки из 29 символов требуется более 60 секунд. А при втором методе — 20 микросекунд. Это не ошибка. При поиске 29-символьной строки Thompson NFA работает примерно в миллион раз быстрее. Если нужно найти 100-символьную строку, то Thompson NFA справится менее чем за 200 микросекунд, а Perl понадобится более 1015 лет. Причём он взят лишь для примера, во многих других языках наблюдается та же картина — в Python, PHP, Ruby и т. д. Ниже мы рассмотрим этот вопрос более детально.

Наверняка вам трудно поверить приведённым данным. Если вы работали с Perl, то вряд ли подмечали за ним низкую производительность при работе с регулярными выражениями. Дело в том, что в большинстве случаев Perl обращается с ними достаточно быстро. Однако, как следует из графика, можно столкнуться с так называемыми патологическими регулярными выражениями, на которых Perl начинает буксовать. В то же время у Thompson NFA такой проблемы нет.

Возникает логичный вопрос: а почему бы в Perl не использовать метод Thompson NFA? Это возможно и следует делать, и об этом пойдёт далее речь.
Читать дальше →

Об игровых мониторах и 144 герцах

Reading time10 min
Views169K
Привет, GT! Так уж получилось, что последние несколько постов мы обсуждаем мониторную тематику. Началось всё с поста о важных характеристиках мониторов «для дома», потом мы осветили вопрос сверхширокого формата 21:9 (холивар в комментариях прилагается), ну а теперь настало время для последнего вопроса, который мне задавли в личку и на почту несколько раз.


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

Ультраширокоэкранники: «за» и «против»

Reading time6 min
Views109K
Всем привет! Сегодня хотим поднять тему стремительно растущего сегмента моделей с соотношением сторон 21 к 9.



Ultrawidescreen’ы начали появляться в консьюмерском секторе пару-тройку лет назад. Одними из первых популярных моделей были различные варианты от LG с разрешением 2560*1080, сейчас 21:9 есть почти у каждого крупного вендора. О плюсах, минусах и подводных камнях таких мониторов сегодня и поговорим.
Читать дальше →

Обзоры мониторов: на что обратить внимание

Reading time6 min
Views41K
Привет, GT! Вчера мы выбирали комплектующие для бесшумного ПК, а сегодня поговорим о такой штуке, как мониторы. Обзоры различных дисплеев появляются и здесь, и на ресурсах, которые посвящены железу на все 100%, и часто они полны непонятных картинок, графиков и сложных слов в выводах.



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

Учёные подключили мозг парализованной пациентки к планшету Nexus

Reading time2 min
Views18K
imageПарализованная пациентка с нервной системой, поражённой болезнью Лу Герига, получила возможность общаться с внешним миром при помощи нейроинтерфейса, связавшего её мозг с планшетом Nexus 9.

Пациентке под кодовым номером Т6 помогли учёные из Стэнфордского университета. Доклад об успехах на этой неделе на ежегодной конференции по нейробиологии делал нейроинженер, доктор Пол Нуйужукьян [Paul Nuyujukian].

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

Пациентка Т6 два года назад согласилась участвовать в эксперименте, в котором в участок её мозга, отвечающий за двигательную активность, имплантировали 100-канальный массив электродов. Тогда это был лишь прототип: подопытный фокусировался на буквах экранной клавиатуры, а устройство и управляющий алгоритм должны были интерпретировать мозговые сигналы. Но интерфейс первого устройства был неудобным, процесс работы с ним – медленным. К тому же, целью учёных было создание беспроводного интерфейса.
Читать дальше →

Как подружить MS Office и LibreOffice

Reading time5 min
Views232K
image
Здравствуй, читатель! Ты когда-нибудь занимался переводом своего офиса/школы/института/друзей на Linux? Помнишь, как долго и упорно ты доказывал, что это — путь добра и света? А помнишь первую проблему, из-за которой пришлось все вернуть назад? Дай угадаю. Первый документ созданный в LibreOffice или OpenOffice отказался корректно открываться в MS Office? Слезы, сопли и мольбы оставить Linux ни к чему не привели? Утри нос, читатель! Под катом — о том, как подружить LibreOffice 3.5 и MS Office 2010 так, чтобы все везде открывалось одинаково.

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

С чего начать новичку в Go

Reading time2 min
Views161K
Если вы решили попробовать замечательный язык Go, но не знаете с чего начать, вам прямая дорога в этот пост, где я постарался перечислить все необходимые для новичков ресурсы.
Читать дальше →

Information

Rating
Does not participate
Registered
Activity