Как стать автором
Обновить
225
0
Акиньшин Андрей @DreamWalker

Performance Methodologist at JetBrains

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

Интересности из мира квайнов (100 языков, радиационно-устойчивый, часы, змейка)

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

Эстафета из 100 языков программирования


Квайн — компьютерная программа, которая выдаёт на выходе точную копию своего исходного текста. Цепной квайн отличается от обычного тем, что на каждой последующей итерации выводится код на другом языке программирования, до тех пор, пока не выведется код оригинального квайна. В середине 2013 года японский программист Юсукэ Эндо (遠藤 侑介) разработал цепной квайн, содержащий 50 языков программирования. В конце 2014 кода он опубликовал новую версию, включающую уже 100 языков!

Исходники и информация о компиляции всех этих квайнов есть на гитхабе: quine-relay. Любопытно, что исходный код в виде картинки был написан не в ручную (что невозможно в принципе), а сгенерирован. Автор отмечает, что в течении года он опубликует книгу про обфусцированное программирование, которая будет включать в себя подробное объяснение о том, как писать квайны, ascii-art квайны, цепные квайны (подобные этой эстафете).
Далее
Всего голосов 48: ↑46 и ↓2+44
Комментарии9

Подводные камни WPF

Время на прочтение20 мин
Количество просмотров81K
Каждый, кто достаточно долгое время разрабатывал приложения с использованием WPF, наверное, замечал, что этот фреймворк далеко не так прост в использовании, как может показаться на первый взгляд. В этой статье я попытался собрать некоторые наиболее типовые проблемы и способы их решения.
Читать дальше →
Всего голосов 45: ↑44 и ↓1+43
Комментарии21

Анализ тональности высказываний в Twitter: реализация с примером на R

Время на прочтение10 мин
Количество просмотров19K
Социальные сети (Twitter, Facebook, LinkedIn) — пожалуй, самая популярная бесплатная доступная широкой общественности площадка для высказывания мыслей по разным поводам. Миллионы твитов (постов) ежедневно — там кроется огромное количество информации. В частности, Twitter широко используется компаниями и обычными людьми для описания состояния дел, продвижения продуктов или услуг. Twitter также является прекрасным источником данных для проведения интеллектуального анализа текстов: начиная с логики поведения, событий, тональности высказываний и заканчивая предсказанием трендов на рынке ценных бумаг. Там кроется огромный массив информации для интеллектуального и контекстуального анализа текстов.

В этой статье я покажу, как проводить простой анализ тональности высказываний. Мы загрузим twitter-сообщения по определенной теме и сравним их с базой данных позитивных и негативных слов. Отношение найденных позитивных и негативных слов называют отношением тональности. Мы также создадим функции для нахождения наиболее часто встречающихся слов. Эти слова могут дать полезную контекстуальную информацию об общественном мнении и тональности высказываний. Массив данных для позитивных и негативных слов, выражающих мнение (тональных слов) взят из Хью и Лью, KDD-2004.

Реализация на R с применением twitteR, dplyr, stringr, ggplot2, tm, SnowballC, qdap и wordcloud. Перед применением нужно установить и загрузить эти пакеты, используя команды install.packages() и library().
Читать дальше →
Всего голосов 20: ↑18 и ↓2+16
Комментарии4

Виртуальное время. Часть 1: источники времени в компьютере

Время на прочтение13 мин
Количество просмотров41K
Человек, имеющий одни часы, твердо знает, который час. Человек, имеющий несколько часов, ни в чём не уверен.
Закон Сегала
Зачем нужно знать время внутри программы? На самом деле, довольно большое число алгоритмов, используемых на практике, вообще никак не зависят от того, который сейчас час. И это хорошо: история знает много случаев, когда программы, работавшие на старой аппаратуре, «ломаются» при выполнении на новой, более быстрой, как раз из-за завязанности на характерные временные длительности процессов.
Я смог придумать три вида задач, которые требуют чтения текущего времени в повседневной жизни.
  1. Определять относительный порядок событий. Для этого используются часы, измеряющие время от «начала времён», «эпохи» или какого-то иного фиксированного события в прошлом.
  2. Измерять длительность процессов. Для этого используются секундомеры, таймеры.
  3. Не пропустить важное событие в будущем. Для этого нужны будильники.

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


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

Краткое введение в тензоры

Время на прочтение3 мин
Количество просмотров165K
В заметке Магия тензорной алгебры было дано очень неплохое введение в математику тензоров. Но, как мне кажется, этот текст все-равно несколько сложен для понимания. В нем не до конца понятно, что же это такое тензор и зачем он вообще нужен.

Сейчас я попытаюсь дать совсем простое введение в тензоры. Я не претендую на математическую строгость, поэтому некоторые термины могут употребляться не совсем корректно.
Читать дальше →
Всего голосов 39: ↑34 и ↓5+29
Комментарии26

Маленькие хитрости сбора паспортных данных

Время на прочтение5 мин
Количество просмотров58K
Хочу поделиться своим опытом, приобретённым при разработке и сопровождении информационной системы учёта физических лиц в одной организации. Масштаб — несколько десятков тысяч реальных людей. Разумеется, производился сбор в том числе и паспортных данных. Как это часто бывает, исчерпывающего ТЗ сформулировано не было и некоторые вещи пришлось доделывать в процессе. О тонкостях учёта физлиц для программистов, впервые сталкивающихся с такой задачей, я и хотел бы рассказать. В статье будут затронуты только вопросы ФИО, гражданства и документов, удостоверяющих личность. Материал получился несколько сумбурным в связи с тем, что содержит только личный опыт без пересказа общеизвестных фактов и цитирования официальных документов.
Итак, поехали
Всего голосов 27: ↑24 и ↓3+21
Комментарии34

Надлежащая оценка производительности для диагностирования и устранения проблем, возникающих при .Net-сериализации

Время на прочтение7 мин
Количество просмотров11K
Уважаемые читатели! Представляю вашему вниманию перевод статьи Скота Ханселмана под названием "Proper benchmarking to diagnose and solve a .NET serialization bottleneck".

Для начала, несколько оговорок и комментариев. Во-первых, процесс оценки производительности сложен. Трудно выполнять измерения. Но настоящая проблема состоит в том, что часто мы забываем, ДЛЯ ЧЕГО мы оцениваем производительность чего-либо. Мы берем сложную многомашинную финансовую систему и внезапно чрезвычайно фокусируемся на куске кода, выполняющем сериализацию, который, по нашему убеждению, и ЕСТЬ проблема. «Если я смогу оптимизировать эту сериализацию, написав for-цикл из 10000 итерации и сократив время его выполнения на x миллисекунд, все будет путем».
Читать дальше →
Всего голосов 16: ↑16 и ↓0+16
Комментарии2

CLRium: продолжаем тур по городам. Екатеринбург и Питер

Время на прочтение5 мин
Количество просмотров5.2K
Всем привет! Не так давно в Москве завершился CLRium #2, который собрал не много не мало — 380 разработчиков, а это по сравнению с прошлым годом — в 3,8 раза больше! Для меня это — большая победа: это значит что прошлый год всем пришелся по вкусу, а в этом мы сделали шикарные темы докладов. О том, как все прошло и какие выводы я сделал перед Питерской конференцией я и хочу поведать в этой заметке.



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

Сразу ссылки на Сайт мероприятия и Фотографии московской встречи.
Читать дальше →
Всего голосов 19: ↑18 и ↓1+17
Комментарии7

Предельная производительность: C#

Время на прочтение56 мин
Количество просмотров263K
performanceЯ поделюсь 30 практиками для достижения максимальной производительности приложений, которые этого требуют. Затем, я расскажу, как применил их для коммерческого продукта и добился небывалых результатов!
Приложение было написано на C# для платформы Windows, работающее с Microsoft SQL Server. Никаких профайлеров – содержание основывается на понимании работы различных технологий, поэтому многие топики пригодятся для других платформ и языков программирования.
Читать дальше →
Всего голосов 135: ↑90 и ↓45+45
Комментарии289

Использование C# и Wix# для создания msi-пакетов

Время на прочтение9 мин
Количество просмотров39K
От переводчика: англоязычные it-блоггеры обычно начинают такие статьи со слов I'm so excited. Про Wix# я узнал совершенно случайно и спешу поделиться этим открытием с хабрасообществом, т.к. каждый, кто имел дело с «голым» WiX, знает, насколько неприятным может быть этот процесс. И вот теперь можно сделать msi-дистрибутив, написав всего лишь несколько строчек на C#! По-моему, это круто! А относительно недавно (4 дек 2014) автор Wix# Олег Шило дал интервью изданию InfoQ. Перевод этого интервью я и представляю вашему вниманию. И прошу не судить строго за кальку некоторых слов — тот же «деплоймент» мне как-то ближе, чем «развертывание».
Предоставим слово Олегу Шило, автору Wix#
Всего голосов 26: ↑24 и ↓2+22
Комментарии9

CLRium #2: ASP.NET и DNX (.Net Execution Environment) – на новейшем ядре CoreCLR. Отдыхаем душой на Enterprise с Roslyn

Время на прочтение4 мин
Количество просмотров8.9K
Что мы можем накопать в Интернетах про самое свежее, о чем есть только слухи? Наш ответ – ничего, что могло бы пролить свет на вопрос. Например, что такое DNX? Репозиторий проекта нам говорит:

DNX (среда исполнения .Net) – содержит код, необходимый для загрузки приложения и его работы, в том числе систему сборки, SDK и CLR хоста.

Лично мне до недавних пор это не говорило ровным счетом ничего, как, наверное, и вам. А ведь это – будущее ASP.NET.

Или, например, многие не понимают, отчего все сходят с ума от возможности запуска ASP.NET 5 на Linux под новейшим ядром CoreCLR… А ведь не сегодня – завтра начнут появляться вакансии разработчиков ASP.NET под Линукс и все мы с вами вдруг поймем: мы старики, а молодые – уже изучили и знают, захватив все дорогостоящие вакансии.

И вообще… Сколько рантаймов сейчас? Куда делся мир с одним-единственным CLR, и почему он вдруг перестал всех устраивать??

Как узнать первым?
Всего голосов 23: ↑20 и ↓3+17
Комментарии6

Age of JIT compiling. Part II. CLR is watching you

Время на прочтение9 мин
Количество просмотров13K
Продолжая тему JIT-компиляции .NET'a, сегодня мы рассмотрим диспетчеризацию методов у интерфейсов, generics (как классов, так и отдельных методов вместе с реальными сигнатурами); производить отладку релизных сборок с оптимизациями; разберемся с истинным предназначением типа System.__Canon (это не то, что Вы подумали).
Читать дальше →
Всего голосов 27: ↑26 и ↓1+25
Комментарии11

Age of JIT compiling. Part I. Genesis

Время на прочтение4 мин
Количество просмотров18K
Тема рантайма платформы .NET освещена весьма подробно. Однако работа самого JIT, результирующий код и взаимодействие со средой исполнения – не очень.

Ну что ж, исправим это!

Узнаем причины отсутствия наследования у структур, природу unbound delegates.

А еще… вызов любых методов у любых объектов без reflection.
Читать дальше →
Всего голосов 24: ↑22 и ↓2+20
Комментарии18

Семинар по анатомии CLR и .Net Framework. Roslyn, CoreCLR, CoreFx, Nitra, RyuJIT

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

03-04 Апреля в Москве и 29-30 мая — в Санкт-Петербурге пройдет серия семинаров CLRium. У данного семинара нет определенной целевой аудитории, мы рады всем. И начинающим свою карьеру, разработчикам, и махровым, повидавшим виды, архитекторам.

Как люди и хотят, у нас будут не просто технические доклады, без воды и маркетинга. У нас будет много тем, одна из которых — настоящая разминка для мозгов. Мы будем по дампам памяти понимать как устроена CLR и как с ней взаимодействовать не привычным для всех способом — напрямую.

У нас будет:
  • Максимально глубокие, отборные доклады по редко-раскрываемым вопросам
  • Целый вечер, посвященный исключительно ядру .Net. Как с ним работать «без перчаток», напрямую, со структурами в памяти, без рефлексии.


Чем мы гордимся:
  • Наш материал не встретишь в сети Интернет: он полностью авторский
  • Материал освещает самые интересные области .Net, которые почему-то не покрыты материалом.
  • Мы не берем лишних денег с вас и потому у нас — самая дешевая конференция и всех существующих. 2,000 рублей за два дня — такого не предлагает никто. Это ведь как в магазин сходить.

Читать дальше →
Всего голосов 23: ↑19 и ↓4+15
Комментарии6

300 потрясающих бесплатных сервисов

Время на прочтение11 мин
Количество просмотров1.6M


Автор оригинальной статьи Ali Mese добавил ещё 100 новых бесплатных сервисов. Все 400 потрясающих сервисов доступны здесь. И еще подборку +500 инструментов от 10 марта 2017 г. смотрите здесь.



A. Бесплатные Веб-Сайты + Логотипы + Хостинг + Выставление Счета

  • HTML5 UP: Адаптивные шаблоны HTML5 и CSS3.
  • Bootswatch: Бесплатные темы для Bootstrap.
  • Templated: Коллекция 845 бесплатных шаблонов CSS и HTML5.
  • Wordpress.org | Wordpress.com: Бесплатное создание веб-сайта.
  • Strikingly.com Domain: Конструктор веб-сайтов.
  • Logaster: Онлайн генератор логотипов и элементов фирменного стиля (new).
  • Withoomph: Мгновенное создание логотипов (англ.).
  • Hipster Logo Generator: Генератор хипстерских логотипов.
  • Squarespace Free Logo: Можно скачать бесплатную версию в маленьком разрешении.
  • Invoice to me: Бесплатный генератор счета.
  • Free Invoice Generator: Альтернативный бесплатный генератор счета.
  • Slimvoice: Невероятно простой счет.

Читать дальше →
Всего голосов 341: ↑325 и ↓16+309
Комментарии107

Быстрое возведение чисел от 1 до 100 в квадрат

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


*квадраты до сотни

Для того, чтобы бездумно не возводить в квадрат по формуле все числа, нужно максимально упростить себе задачу следующими правилами.
Читать дальше →
Всего голосов 118: ↑83 и ↓35+48
Комментарии38

Впервые создана компьютерная модель живой клетки

Время на прочтение2 мин
Количество просмотров9.3K
Ученые в Стэнфорде совершили огромный шаг вперед: впервые была создана полная цифровая модель организма и всего его жизненного цикла. Для создания компьютерной модели крошечной бактерии Mycoplasma genitalium потребовалось написать 28 независимых взаимодействующих друг с другом модулей, симулирующих процессы живой клетки и оперирующих 1.900 параметрами. Для описания их поведения использовались 900 различных научных отчетов. Сложность модели высока: лишь для процесса деления одноклеточного требуется 10 часов симуляции, а на выходе получается полгигабайта данных.

Mycoplasma genitalium — простой паразит, обитающий в мочеполовых и дыхательных путях. Бактерия привлекает исследователей в первую очередь размером своего генетического аппарата — у M. genitalium всего 525 генов, в то время как у более традиционной лабораторной E. coli их 4.288. Несмотря на характер микроорганизма и трудности в работе с паразитом, малое количество генов делает его привлекательным для биоинженеров: именно с участием M. genitalium в 2008 году впервые была создана искусственная хромосома.
Читать дальше →
Всего голосов 97: ↑90 и ↓7+83
Комментарии81

Геймеры в Fold.it решили научную проблему

Время на прочтение2 мин
Количество просмотров9K
В мае 2008 года мы обсуждали новую компьютерную игру Fold.it, которую разработали учёные из Вашингтонского университета (США). Программа представляет собой модель сворачивания белков в трёхмерные конструкции. Геймер должен попытаться сделать это наиболее удачным образом, работая с настоящими протеинами. Результаты отправляются в центр обработки, где их проверяют на суперкомпьютере.



За три прошедших года игроки смогли сложить несколько удачных молекул, но их последняя находка не идёт ни в какое сравнение с предыдущими: была обнаружена и подтверждена точная модель фермента протеазы, который играет ключевую роль в заражении организма обезьян ретровирусом ВИЧ. Модель этого белка не удавалось получить в течение уже 15-ти лет. Теперь же можно попробовать создать лекарство, которое воздействует на этот фермент.
Читать дальше →
Всего голосов 166: ↑156 и ↓10+146
Комментарии121

Andrea Mosaic — мозаика быстро и лаконично

Время на прочтение2 мин
Количество просмотров30K
Сегодня хочется рассказать о том, как создать такие картинки.
Не видите ничего особенного? Можете сделать так своими руками? Загляните под кат.




Картинка кликабельна. (Трафик, осторожно!)

Upd: Заменил картинку на более важную сегодня.
Узнать,как такое сделать без фотошопа
Всего голосов 114: ↑73 и ↓41+32
Комментарии44

Фолдинг белков превратили в компьютерную игру

Время на прочтение2 мин
Количество просмотров16K
Потрясающую игру разработали учёные из Вашингтонского университета (США). Программа под названием Fold.it представляет собой модель сворачивания белков в трёхмерные конструкции. Геймер должен попытаться сделать это наиболее удачным образом. В программу будут загружаться реальные данные о настоящих, только что изобретённых протеинах, которые непонятно как сворачиваются. Результаты отправятся через интернет в центр обработки, где их проверят на суперкомпьютере (это будет с осени, а пока что в программу заложены уже решённые загадки, так что сейчас она выполняет роль тренажёра).



В самом деле, все геймеры нашего мира тратят миллиарды человеко-часов на бесполезные для человечества игры типа WoW, Counter-Strike или пасьянса «Косынка». В то же время они могли бы использовать интеллект более эффективно: например, сворачивая белки на экране своего монитора. Это ведь тоже по-своему интересно.
Читать дальше →
Всего голосов 41: ↑39 и ↓2+37
Комментарии36

Информация

В рейтинге
Не участвует
Работает в
Зарегистрирован
Активность