Как стать автором
Обновить
2
0
Александр Полянкин @ranquild

Software Engineer

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

CLRium #3. Анонс докладчиков

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


15 апреля в Санкт-Петербурге, 22 апреля — в Москве, 29 апреля — в Омске, 13 мая — в Екатеринбурге и 20 мая — в Новосибирске пройдет серия семинаров CLRium #3.

В прошлом году мы говорили об околохакерских штуках — разборе памяти .NET куч, приведение типов, между которыми приведение невозможно… Делили текущий поток на два… Говорили о ядре нового .NET Core и пытались понять, для чего нам нужен (и нужен ли?) Roslyn

В этом же году мы поговорим о другом. О сугубо практически полезных вещах, о которых вы ранее наверняка не знали, но в которых таится огромная сила и мощь. Об изменяемых языках программирования, производительности и кроссплатформенной разработке GUI. Что значит «об изменяемых»? Это значит, что язык умеет менять собственный синтаксис.

Как и ранее, у нас будут:
  • Максимально глубокие, отборные доклады по редко-раскрываемым вопросам
  • Мы будем говорить только о том, о чем вы наверняка, до того не знали
  • Максимально-полезные доклады, которые усилят Вас как специалиста
  • Почти все доклады — от 1,5 часов. Что позволит докладчикам не экономить и рассказать все что они знают
Читать дальше →
Всего голосов 19: ↑19 и ↓0+19
Комментарии4

Большой опрос по алгоритмам

Время на прочтение1 мин
Количество просмотров22K
Тема «нужны или не нужны алгоритмы современным разработчикам» на днях в очередной раз всплывала на Хабре и породила множество комментариев. В связи с этим предлагаю следующий опрос.

Сможете ли вы реализовать, пусть и не production ready, этот алгоритм, почти не подсматривая в спецификацию:

UPD: Касательно последнего опроса — было бы очень интересно в комментариях услышать реальные интересные примеры из жизни.
Всего голосов 55: ↑44 и ↓11+33
Комментарии74

Почему владение/заимствование в Rust такое сложное?

Время на прочтение5 мин
Количество просмотров12K
Оригинал статьи написан живущим на вашингтонщине Иваном Сагалаевым, мужем небезызвестной Алёны C++.

Сама статья.

Работать с чистыми функциями просто: вы передаете аргументы и получаете результат, при этом нет никаких побочных эффектов. С другой стороны, если функция производит побочные эффекты, такие, как изменение собственных аргументов или же глобальных объектов, то найти причины этого трудно. Мы привыкли также, что если видим что-то вроде player.set_speed(5), то можно быть уверенным, что тут собираются изменить объект player предсказуемым способом (и, возможно, посылают некоторые сигналы куда-нибудь).

Система владения/заимствования языка Rust сложна и она создает совершенно новый класс побочных эффектов.
Читать дальше →
Всего голосов 22: ↑19 и ↓3+16
Комментарии11

Microsoft анонсировала Linux версию SQL Server

Время на прочтение1 мин
Количество просмотров51K
image
Компания Microsoft анонсировала поддержку операционных систем семейства Linux в следующей версии SQL Server.

Это очередной шаг по выходу на рынок Linux систем после заключения партнерского соглашения с RedHat.

Также, анонс прокомментировал Марк Шаттлворт, основатель компании Canonical:
“Мы рады работать с Microsoft, когда они приносят SQL Server на Linux. Заказчики уже используют сервисы Azure Data Lake на Ubuntu, а теперь разработчики будут иметь возможность строить новые приложения со всеми возможностями промышленного SQL Server'а.”

На сайте SQL Server также уже появилась информация относительно новых возможностей СУБД.

Релиз версии ожидается в середине 2017 года.
Всего голосов 53: ↑45 и ↓8+37
Комментарии80

Для Apple OS X обнаружен первый вымогатель

Время на прочтение3 мин
Количество просмотров19K
Специалисты компании Palo Alto Networks обнаружили первый настоящий вымогатель (ransomware) для Apple OS X. Вредоносная программа получила название KeRanger и обнаруживается нашими антивирусными продуктами как OSX/Filecoder.KeRanger.A. KeRanger относится к типу crypto-ransomware или filecoder и специализируется на шифровании файлов пользователя с дальнейшим требованием выкупа за расшифровку.



Для распространения вредоносной программы злоумышленники выбрали эффективный способ компрометации дистрибутивов ПО под названием Transmission для OS X. Эта программа представляет из себя простой свободно распространяемый клиент BitTorrent. Несколько дней назад два дистрибутива Transmission v2.90 были скомпрометированы KeRanger и распространялись на официальном веб-сайте клиента. Так как Transmission является свободным ПО, злоумышленники могли просто скомпилировать специальную backdoored-версию и заменить ее на сервере разработчиков. Кроме этого, скомпрометированный дистрибутив был подписан легитимным цифровым сертификатом разработчика для Mac.

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

Почему умер Хабр. Что делать и куда бежать

Время на прочтение2 мин
Количество просмотров66K
Disclaimer. Этот пост — развёрнутый ответ на пост Хабр умирает?.

В исходном посте я дал ссылку на свою дискуссию с deniskin от ноября 2014 года (чуть позднее точки на графике ТС, когда Хабр начал умирать): habrahabr.ru/post/278325/#comment_8789143

В том треде я довольно подробно описал, что же произошло с Хабром и почему он умирает. Прошло полтора года, уважаемое сообщество может оценить, кто из нас оказался прав.

Исходный тезис звучит следующим образом: Хабр убило прежде всего непонимание Тематическими Медиа, что такое Хабрахабр и почему он взлетел — в отличие от прочих ТМ проектов, половину из которых уже закопали, а другая половина летит низенько-низенько.

Дело в том, что Хабр в том его виде, в котором он существовал в 2010 году, был вовсе не «сайтом про IT» типа 3dnews и Ferra. Хабр был, в первую очередь, кружком по интересам. Собралась кучка гиков и обсуждала, в общем, то, что им самим интересно — включая, но не ограничиваясь, космос, настолки, вещества, теорию эволюции, жадность копирастов, гребёнку Чурова и прочая. Периодически ТМ устраивала набеги и банила особо жестокий флейм, но, в целом, ситуация всех устраивала.
В принципе, основную мысль я изложил, под катом хроника борьбы слона с посудной лавкой
Всего голосов 244: ↑206 и ↓38+168
Комментарии227

Возражения против принятия Coroutines с await в C++17

Время на прочтение6 мин
Количество просмотров33K
Недавно Россию посетила группа экспертов С++, участвующих в работе комитета по стандартизации. 25 февраля они участвовали в Q&A сессии, организованной Яндексом, а после выступали на конференции С++ Russia 2016. Одним из них был Гор Нишанов, автор предложения о включении C#-подобных сопрограмм (те которые async/await) в стандарт С++17. Ранее Гор выступал на CppCon 2015 с докладом "С++ Сопрограммы — Абстракция с отрицательным оверхедом". Такая возможность структурировать асинхронный код выглядит привлекательно, Гор в докладе убедительно показывает, что количество кода сокращается, а скорость работы возрастает по сравнению с «рукописными» State Machine. Кроме того, это одно из самых больших потенциальных изменений в следующем стандарте и привлекает к себе внимание. Судя по публикациям, proposal получил значительное одобрение и комитет склоняется к включению в стандарт.

После этого я был весьма удивлен, когда загуглив упомянутый proposal P0057, получил в выдаче встречный документ "Coroutines belong in a TS", который подвергает предлагаемую реализацию сопрограмм жесткой и весьма эмоциональной критике и требует не включать в С++17, а отложить для «обкатки» в Technical Specification. Отмечу, что не являюсь сторонником этих возражений, а приглашаю интересующихся к обсуждению, насколько обоснованны перечисленные претензии и все ли так плохо. Под катом «выжимка» из документа с небольшими комментариями.
Читать дальше →
Всего голосов 34: ↑33 и ↓1+32
Комментарии109

ASP.NET Core + Docker: готовим вместе

Время на прочтение6 мин
Количество просмотров40K
Мы рады поделиться с вами очередной статьей из серии статей о платформе ASP.NET Core (ранее ASP.NET 5). В этот раз Вячеслав Бобик — .NET-разработчика из компании Radario, продолжит свой рассказ о платформе рассказом про применение ASP.NET с контейнерами Docker. Все статьи цикла вы всегда можете найти тут #aspnetcolumn — Владимир Юнев

image

Кам нам известно, ASP.NET Core, можно(и даже нужно) запускать не только на Windows, но так же на Mac и Linux. Что это нам дает? Например можем запаковать наше приложение со всеми его зависимостями в docker контейнер и удобно разворачивать его на тестовых\рабочих средах. Мы не будем рассматривать о том что такое docker и как его устанавливать, а вместо этого попробуем собрать образ с ASP.NET Core.

Подготавлием тестовое приложение


У нас есть выбор на чем запускать наше первое ASP.NET Core приложение: на mono или на coreclr. Я выберу второй вариант, так как это модно, стильно, молодежно.

По традиции созданим пустой ASP.NET Core проект:
Читать дальше →
Всего голосов 25: ↑23 и ↓2+21
Комментарии2

Сделай сам: SQL JOIN на Java

Время на прочтение7 мин
Количество просмотров83K
Я часто собеседую разработчиков и часто задаю им простой, как кувалда, вопрос — как внутри работает JOIN в SQL? В ответ я обычно слышу бессвязное мычание про волшебные деревья и индексы, которые быстрее. Когда-то мне казалось, что каждый программист специалист должен знать то, с чем работает. Впоследствии жизнь объяснила мне, что это не так. Но мне все еще не понятно, как можно годами теребить базёнку, даже не догадываясь, а что там у нее «под капотом»?

Давайте проведем ликбез и вместе посмотрим, как же работают эти джойны, и даже сами реализуем парочку алгоритмов.

SQL JOIN
Читать дальше →
Всего голосов 82: ↑58 и ↓24+34
Комментарии128

Интегрируем Webpack в Visual Studio 2015

Время на прочтение2 мин
Количество просмотров27K
Webpack + VS

В статье я расскажу как сделать работу с webpack из Visual Studio удобнее, а именно: автоматический запуск webpack при открытии проекта, бандлинг при изменении файлов и оповещение об ошибках на рабочем столе.
Читать дальше →
Всего голосов 17: ↑15 и ↓2+13
Комментарии6

В EMET обнаружена уязвимость

Время на прочтение2 мин
Количество просмотров5.9K
Специалисты компании FireEye обнаружили серьезную недоработку безопасности в инструменте EMET [1,2,3,4,5,6,7], которая позволяет достаточно просто отключить его механизмы защиты процессов с использованием его же встроенных функций. Уязвимость присутствует в предыдущих версиях EMET, т. е. в версиях до актуальной 5.5. Пользователям этих версий рекомендуется обновить EMET до последней версии.



Сам EMET поддерживает внутренний механизм снятия перехватов с API-функций системных библиотек в защищаемых процессах. Эта функция применяется в том случае, когда нужно оперативно отключить защиту процесса, за реализацию которой отвечает динамическая библиотека emet.dll. Полное отключение защиты реализуется обработчиком DllMain с кодом выгрузки DLL_PROCESS_DETACH. В силу того, что emet.dll не перехватывает функцию kernel32!GetModuleHandleW и не контролирует ее поведение, шелл-коду достаточно вызвать GetModuleHandleW для получения адреса загрузки DLL в памяти и вызвать DllMain, передав функции это значение и константу выгрузки.

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

Неожиданное поведение openssl_random_pseudo_bytes() приводящее к фатальной потере криптостойкости

Время на прочтение2 мин
Количество просмотров19K
Доброго времени суток всем.

Недавно в одном из проектов мы столкнулись со следующей проблемой — функция openssl_random_pseudo_bytes() выдавала дублирующиеся псевдослучайные последовательности!

Этого не может быть, потому что этого не может быть никогда! — Скажет любой, кто читал документацию этой функции. И, да, $crypto_strong исправно выдавал TRUE.

И тем не менее — ошибки уникальности при вставке в базу сыпались пачками и лог подтверждал — 32-байтные последовательности генерировались повторно через разные интервалы, от суток до недели. Расследование заняло целый месяц. Сейчас я на 99% уверен, что причина найдена — но буду благодарен, если Хабражители подтвердят или опровергнут мои выводы.

Так в чем же было дело?
Всего голосов 36: ↑32 и ↓4+28
Комментарии10

Битва за скорость звука на Android x86

Время на прочтение10 мин
Количество просмотров18K
image В основе «пирамиды потребностей» тех, кому нужны Android-приложения для работы со звуком, лежит скорость реакции системы на действия пользователя. Предположим, некая программа быстро запустится и покажет прекрасную картинку с клавиатурой рояля. Для начала — неплохо, но если моменты касания клавиш и начала звучания (пусть – просто восхитительного) разделяет заметное время, программу закроют и больше к ней не вернутся.

Поговорим об особенностях воспроизведения звука с высокой скоростью отклика на Android-устройствах, основанных на процессорах Intel Atom (Bay Trail). Применённый подход можно использовать и на других платформах от Intel. Здесь мы рассматриваем Android 4.4.4., подобное исследование для платформы Android M ещё находится в работе.
Читать дальше →
Всего голосов 27: ↑26 и ↓1+25
Комментарии12

Критическая уязвимость в Cisco ASA

Время на прочтение2 мин
Количество просмотров30K
В операционной системе Cisco ASA обнаружена критическая узявимость CVE-2016-1287 в реализации протокола Internet Key Exchange (IKE) версии 1 и 2, позволяющая выполнять произвольный код или удалённо перезагрузить устройство специально сформированным UDP-пакетом. Ей присвоен наивысший уровень опасности.

Технический обзор и примеры эксплуатации:
blog.exodusintel.com/2016/02/10/firewall-hacking
Читать дальше →
Всего голосов 17: ↑17 и ↓0+17
Комментарии10

Почему я больше не использую MVC-фреймворки

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


Уважаемые хабравчане.

Поскольку дискуссия вокруг статьи идет весьма активно, Жан-Жак Дюбре (он читает комментарии) решил организовать чаты в gitter.

Вы можете пообщаться с ним лично в следующих чатах:
https://gitter.im/jdubray/sam
https://gitter.im/jdubray/sam-examples
https://gitter.im/jdubray/sam-architecture

Также автор статьи разместил примеры кода здесь: https://bitbucket.org/snippets/jdubray/

По поводу кода он оставил следующий комментарий:
I don't code for a living, so I am not the best developer, but people can get a sense of how the pattern works and that you can do the exact same thing as React + Redux + Relay with plain JavaScript functions, no need for all these bloated library (and of course you don't need GraphQL).
Читать дальше →
Всего голосов 78: ↑67 и ↓11+56
Комментарии254

Google отказывается от Flash в рекламе

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


Последние несколько лет HTML5 все больше вытесняет FLASH.

На днях Google анонсировал, что полностью откажется от показа рекламы на Flash, в пользу HTML5 в самом ближайшем времени.
Читать дальше →
Всего голосов 13: ↑10 и ↓3+7
Комментарии7

Месье, ваши problem solving skills не на высоте, или как я провалил одно собеседование

Время на прочтение5 мин
Количество просмотров101K
Предлагаю вашему вниманию небольшую историю моего провала и того как, порой, бывают безлики проверки на умение "решать задачи/проблемы" во время собеседований.

image
Читать дальше →
Всего голосов 96: ↑71 и ↓25+46
Комментарии474

Сравнение строк в C# (по умолчанию)

Время на прочтение10 мин
Количество просмотров53K
Часто бывает, что мы соединяем 2 коллекции или группируем коллекцию при помощи LINQ to Objects. При этом происходит сравнение ключей, выбранных для группировки или связывания.
К счастью, стоимость этих операций равна O(n). Но в случае больших коллекций нам важна эффективность самого сравнения. Если в качестве ключей выбраны строки, то какая из реализаций сравнения будет использована по умолчанию, подходит ли эта реализация для ваших строк и можно ли, указав IEqualityComparer<string> явно, сделать эту операцию быстрее?
clients.Join(orders, 
                   c => c.Name, 
                   o => o.ClientName, 
                   (c, o) => CreateOrederDto(c, o));

Как же выбирается реализация компаратора, если пользователь не указал её явно?
Пороемся в исходном коде coreclr
Всего голосов 28: ↑28 и ↓0+28
Комментарии1

AUTO_CLOSE

Время на прочтение5 мин
Количество просмотров20K
Если бы SQL Server существовал во времена Инквизиции, то за включение некоторых опций на продакшен серверах нужно было бы наказывать калёным железом. Но если отбросить лирику, то далее на рассмотрим почему не нужно включать AUTO_CLOSE и к чему может привести использование этой опции.

Собственно, как и любая интересная истории из жизни, все начиналось с рутиной задачи.

На днях пришлось заглянуть в Error Log на тестовом сервере. На второй минуте ожидания, SSMS изрядно поплохело от обилия сообщений, которые хранил журнал, и я решил посмотреть сколько же весят логи с помощью xp_enumerrorlogs:

DECLARE @t TABLE (lod_id INT PRIMARY KEY, last_log SMALLDATETIME, size INT)
INSERT INTO @t
EXEC sys.xp_enumerrorlogs

SELECT lod_id, last_log, size_mb = size / 1048576.
FROM @t

lod_id   last_log              size_mb
-------- --------------------- ---------------
0        2016-01-05 08:46:00   567.05288505
1        2015-12-31 12:53:00   1370.39249420
2        2015-12-18 11:32:00   768.46394729
3        2015-12-02 13:54:00   220.20050621
4        2015-12-02 13:16:00   24.04152870
5        2015-11-16 13:37:00   80.07946205
6        2015-10-22 12:13:00   109.33527946
Подробнее
Всего голосов 26: ↑21 и ↓5+16
Комментарии6

ASP.NET 5 мертв — представляем ASP.NET Core 1.0 и .NET Core 1.0

Время на прочтение2 мин
Количество просмотров64K
Выбор названий продуктов – сложное дело.
Существует только две сложные темы в Науке о Компьютерах: cache invalidation и выбор названий. – Фил Карлтон.
Очень просто откинуться на спинку кресла и сказать: “это очень просто, они должны были назвать это Foo”, но зачастую в именование вещей вовлечено множество игроков. ASP.NET – это хороший бренд, который с нами уже около 15 лет. ASP.NET 4.6 – поддерживаемый продукт выпущенный недавно, который доступен для вас здесь http://get.asp.net.

image

Тем не менее, назвать написанный с чистого листа ASP.NET-фреймворк как “ASP.NET 5” было плохой идеей и вот почему: 5 больше, чем 4.6, что выглядит как-будто ASP.NET 5 — большая, лучшая замена ASP.NET 4.6. А это не совсем так.

Так что мы изменили имя и выбрали более подходящий номер версии.
Читать дальше →
Всего голосов 35: ↑33 и ↓2+31
Комментарии83

Информация

В рейтинге
Не участвует
Откуда
Санкт-Петербург, Санкт-Петербург и область, Россия
Дата рождения
Зарегистрирован
Активность