Как стать автором
Обновить
0
@bndr_kgnread⁠-⁠only

Пользователь

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

Где и как изучать машинное обучение?

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

Всем привет!


Ни для кого не секрет, что интерес к машинному обучению и искусственному интеллекту растет в лучшем случае по экспоненте. Тем временем мой Яндекс Диск превратился в огромную свалку пейперс, а закладки в Google Chrome превратились в список, длина которого стремится к бесконечности с каждым днем. Таким образом, дабы упростить жизнь себе и вам, решил структурировать информацию и дать множество ссылок на интересные ресурсы, которые изучал я и которые рекомендую изучать вам, если вы только вначале пути (буду пополнять список постоянно).

Путь для развития новичка я вижу примерно так:

Untitled_presentation
Читать дальше →
Всего голосов 47: ↑44 и ↓3+41
Комментарии19

Кража NTLM через PDF

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

Прошло всего несколько дней после того, как было объявлено, что злоумышленники могут использовать уязвимость в MS Outlook, используя OLE, чтобы украсть NTLM-хэш пользователей Windows.

Исследовательская группа Check Point обнаружила, что утечка дайджеста NTLM возможна и с помощью файлов PDF. Атака возможна без какого-либо взаимодействия с пользователем — достаточно просто открыть файл.
Продолжение внутри
Всего голосов 24: ↑23 и ↓1+22
Комментарии5

Прокачиваем производительность C# с Федерико Луисом

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

Сегодня мы поговорим о производительности в C#, о способах прокачать её до неузнаваемости. Задача этой статьи — продемонстрировать такие способы повышения производительности, которые, при необходимости, вы смогли бы использовать самостоятельно. Однако эти методики не являются универсальными — вы не сможете использовать их в качестве общего решения любой задачи. Они хороши при наличии вполне конкретных сценариев использования, о которых пойдет речь ниже.


В качестве прототипа статьи был выбран доклад Федерико Луиса, основателя компании Corvalius (они занимаются R&D). Работая над движком базы данных для одного из клиентов, они посвятили около четырёх лет задачам оптимизации. Такое количество времени требуется для того, чтобы применить разного рода техники и достичь хороших показателей оптимизации. Требуется выявить все проблемы и узкие места, проследить поведение софта в соответствии со всеми имеющимися метриками и так далее. Примеры из этой статьи основаны на работе над RavenDB 4.0 (известная NoSQL база для .NET), которую компания Федерико тюнила до уровня наносекунд во всевозможных сложных кейсах.


Все примеры, которые встретятся вам в ходе рассказа (плюс некоторые дополнительные), доступны в специальном репозитории на GitHub.


Осторожно, трафик! В этом посте присутствует огромное количество картинок — слайдов и скриншотов с видео в формате 720p. На слайдах присутствует важный для понимания статьи код.

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

Операционные системы с нуля; уровень 1 (старшая половина)

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

Настало время следующей части. Это вторая половина перевода лабы №1. В этом выпуске мы будем писать драйверы периферии (таймер, GPIO, UART), реализуем протокол XMODEM и одну утилитку. Используя всё это мы напишем командную оболочку для нашего ядра и загрузчик, который позволит нам не тыкать microSD-карточку туда-сюда.


Младшая половина.
Начинать чтение стоит с нулевой лабы.

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

О вреде изменяемых значимых типов

Время на прочтение8 мин
Количество просмотров22K
Большинство программистов, которых нелегкая судьба свела с платформной.Net знают о существовании значимых типов (value types) и ссылочных типов (reference types). И довольно многие из них прекрасно знают, что помимо названия, эти типы имеют и другие различия, такие как расположение объектов оных типов в памяти, а также в семантике.

Что касается первого различия (о котором стоит упомянуть как минимум ради полноты изложения), то оно заключается в том, что экземпляры ссылочных типов всегда располагаются в управляемой куче, в то время как экземпляры значимых типов по умолчанию располагаются в стеке, но могут мигрировать в управляемую кучу вследствие упаковки, будучи членами ссылочных типов, а также при использовании их в хитрых экзотических конструкциях языка C#, типа замыканий (*).

Хотя это отличие является очень важным и именно благодаря нему значимые типы существуют и используются, у этой пары типов есть еще одно, не менее важное семантическое различие. Значимые типы, как подсказывает название, являются значениями, которое копируется каждый раз при передаче в функцию или при возвращении из нее. А поскольку при копировании, как, опять же, подсказывает название, передается и возвращается не исходный вариант, а копия, то все попытки изменений приведут к изменению копии, а не исходного экземпляра.
Читать дальше →
Всего голосов 79: ↑70 и ↓9+61
Комментарии27

Навыки и требования к специалистам по информационной безопасности

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


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

В данной статье будет раскрыта тема востребованности специалистов по информационной безопасности, специфика требований и навыков.
Читать дальше →
Всего голосов 28: ↑26 и ↓2+24
Комментарии22

Барьеры памяти и неблокирующая синхронизация в .NET

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

Введение


В этой статье я хочу рассказать об использовании некоторых конструкций, применяющихся для осуществления неблокирующей синхронизации. Речь пойдёт о ключевом слове volatile, функциях VolatileRead, VolatileWrite и MemoryBarrier. Мы рассмотрим, какие проблемы вынуждают нас воспользоваться этими языковыми конструкциями и варианты их решения. При обсуждении барьеров памяти вкратце рассмотрим модель памяти .NET.
Читать дальше →
Всего голосов 63: ↑62 и ↓1+61
Комментарии18

Удаленное управление сеансом пользователя windows стандартными средствами

Время на прочтение3 мин
Количество просмотров306K
Однажды мне захотелось управлять одним из домашних компьютеров удаленно, но при этом взаимодействовать с текущим пользователем, но компьютер был довольно слабый и при запуске например TeamViewer’а нагрузка процессора поднималась до 98% и компьютер начинал заметно тормозить. Попробовал стандартный RDP, но тогда «выбивался» текущий пользователь и для входа локально приходилось набивать пароль. Но чуть позже мне случайно попалась команда shadow.
Читать дальше →
Всего голосов 77: ↑72 и ↓5+67
Комментарии41

.Net Core, AppDomain, WCF, RPC маршалинг по Tcp/Ip свой велосипед

Время на прочтение12 мин
Количество просмотров7.9K
Как известно, в .Net Core, на данный момент, нет AppDomain, а WCF только SOAP клиент .Net Core, WCF и ODATA клиенты.

Конечно, задачу можно решить и через Web Api с WebSockets для вызова событий. Но, я просто предлагаю альтернативное решение на маршалинге по TCP/IP и создание объектов, и вызов методов на стороне сервера с помощью Reflection.

Вот как выглядит удаленный вызов методов и свойств. Пример взят отсюда Основы перегрузки операторов:

   // Выведем сообщение в консоли сервера
   string typeStr = typeof(Console).AssemblyQualifiedName;
   var _Console = wrap.GetType(typeStr);// Получим тип на сервере по имени
   // "Hello from Client" будет выведено в консоле сервера
    _Console.WriteLine("Hello from Client");

   // получим тип по имени класса TestDllForCoreClr.MyArr
   // Из сборки TestDll.dll
   var MyArr = wrap.GetType("TestDllForCoreClr.MyArr", "TestDll");

   // Создадим объекты на стороне сервера
   // и получим ссылки на них
   var Point1 = MyArr._new(1, 12, -4); // new MyArr(1, 12, -4);
   var Point2 = MyArr._new(0, -3, 18); // new MyArr(0, -3, 18);

   // Все операции с объектами PointX происходят на стороне сервера
   Console.WriteLine("Координаты первой точки: "+Point1.x+" "+Point1.y+" "+Point1.z);
   Console.WriteLine("Координаты второй точки: "+Point2.x+" "+Point2.y + " "+ Point2.z);

   var Point3 = Point1 + Point2;
   Console.WriteLine("\nPoint1 + Point2 = " + Point3.x + " " + Point3.y + " " + Point3.z);
   Point3 = Point1 - Point2;
   Console.WriteLine("Point1 - Point2 = "+ Point3.x + " " + Point3.y + " " + Point3.z);
   Point3 = -Point1;
   Console.WriteLine("-Point1 = " + Point3.x + " " + Point3.y + " " + Point3.z);
   Point2++;
   Console.WriteLine("Point2++ = "+ Point2.x + " " + Point2.y + " " + Point2.z);
   Point2--;
   Console.WriteLine("Point2-- = " + Point2.x + " " + Point2.y + " " + Point2.z);
Читать дальше →
Всего голосов 7: ↑6 и ↓1+5
Комментарии10

Как запустить программу без операционной системы

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

Так вышло, что в нашей статье, описывающей механизм опроса PCI шины, не было достаточно подробно описано самого главного: как же запустить этот код на реальном железе? Как создать собственный загрузочный диск? В этой статье мы подробно ответим на все эти вопросы (частично данные вопросы разбирались в предыдущей статье, но для удобства чтения позволим себе небольшое дублирование материала).

В интернете существует огромное количество описаний и туториалов о для того как написать собственную мини-ОС, даже существуют сотни готовых маленьких хобби-ОС. Один из наиболее достойных ресурсов по этой тематике, который хотелось бы особо выделить, это портал osdev.org. Для дополнения предыдущей статьи про PCI (и возможности писать последующие статьи о различных функциях, которые присутствуют в любой современной ОС), мы опишем пошаговые инструкции по созданию загрузочного диска с привычной программой на языке С. Мы старались писать максимально подробно, чтобы во всем можно было разобраться самостоятельно.

Итак, цель: затратив как можно меньше усилий, создать собственную загрузочную флешку, которая всего-навсего печатает на экране компьютера классический “Hello World”.

Читать дальше →
Всего голосов 196: ↑188 и ↓8+180
Комментарии69

Пишем для UEFI BIOS в Visual Studio. Часть 2 – создаем свой первый драйвер и ускоряем отладку

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

Введение


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

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


Те, кто заинтересовался — добро пожаловать под кат.
Читать дальше →
Всего голосов 16: ↑14 и ↓2+12
Комментарии7

Как я проходил собеседования на позицию Junior .Net Developer

Время на прочтение8 мин
Количество просмотров266K
Приветствую всех. Сегодня расскажу вам как я проходил собеседования в Москве на позицию .Net Developer. Усиленно готовился к собеседованиям месяц, целыми днями сидел и смотрел вопросы и пытался отвечать на них, а также читал книжки по С#. В статье привожу интересные задачки и вопросы, которые мне задавали в разных компаниях в Москве. Заранее скажу, что я попал в ту компанию, в которую хотел. Я прошел 4 собеседования в этой компании и меня наконец то взяли! Много статей было прочитано в частности здесь и надеюсь, что эту статью тоже будут читать начинающие Net разработчики и спрашивать все в комментариях.

Кому интересна тема прохождения собеседований, прошу под кат!
Читать дальше →
Всего голосов 64: ↑51 и ↓13+38
Комментарии158

У нас длинные руки: 7 зарубежных площадок, на которых можно найти удалённую работу

Время на прочтение3 мин
Количество просмотров133K
Развитие телекоммуникационных технологий — это win-win для работодателей и работников: компании могут находить таланты по всему миру, а люди могут работать откуда угодно, лишь бы был Wi-Fi. И популярность удалённой работы лишь растёт. К примеру, согласно отчёту Gallup, в 2015 году 37% респондентов ответили, что работают удалённо частично или весь рабочий день. Это было на 7 процентных пунктов больше, чем в 2008. И нет причин считать, что эта тенденция сегодня изменилась.

Чем больше людей обращаются к подработке, фрилансу или удалённой работе на полную ставку, тем чаще возникает вопрос: где именно мне найти работу, которая позволит отказаться от поездок в офис? Предлагаем вашему вниманию семь зарубежных площадок, на которых можно найти удалённую работу.
Читать дальше →
Всего голосов 50: ↑49 и ↓1+48
Комментарии35

«Через год-два .NET Core потеснит Java на рынке enterprise решений», — Интервью с Jon Skeet, Google

Время на прочтение20 мин
Количество просмотров80K
Наверняка вы знаете, кто такой Джон Скит: №1 на Stack Overflow, автор C# in Depth (одной из лучших книг по .NET), разработчик в Google и 14-кратный MVP. Разработчиков такого масштаба не так много, хватит двух порядков, чтобы их всех перечислить. 19-20 мая Джон приедет в Петербург и выступит на DotNext 2017 Piter.

Мне удалось пообщаться с Джоном и взять у него большое интервью по поводу судьбы .NET, .NET Core, нововведений в C# 7 и общем уровне развития среднего разработчика в 2017 году.



Если говорить конкретно, то обсудили следующие вопросы:

  • Общее направление развития .NET и ошибки Microsoft;
  • Чего ждать от .NET Core в ближайшем будущем;
  • Стоит ли мигрировать на .NET Core, если у вас легаси на .NET Framework;
  • Проблемы и победы .NET на поприще кроссплатформенности;
  • Java vs .NET на рынке enterprise решений;
  • Чем хороши tuples и pattern matching в С# 7, а что стоило сделать иначе;
  • Небольшие, но приятные фичи C# 7;
  • Деградация сообщества разработчиков (и есть ли она);
  • Правильный подход к диагностике багов и постановке правильных вопросов на SO;
  • Гайд по изучению новых языков и платформ;
  • Проблемы с базовыми типами: числа, текст, дата и время;

Интервью получилось очень большое, но мне кажется, оно стоит каждой потраченной на него минуты.
Читать дальше →
Всего голосов 116: ↑105 и ↓11+94
Комментарии545

Разработка веб-скрапера для извлечения данных с портала открытых данных России data.gov.ru

Время на прочтение7 мин
Количество просмотров51K
Иногда возникает необходимость получить данные c веб-страниц и сохранить их в структурированном виде.

Инструменты веб-скрапинга (web scraping) разрабатываются для извлечения данных с веб-сайтов. Эти инструменты бывают полезны тем, кто пытается получить данные из Интернета. Веб-скрапинг — это технология, позволяющая получать данные без необходимости открывать множество страниц и заниматься копипастом. Эти инструменты позволяют вручную или автоматически извлекать новые или обновленные данные и сохранять их для последующего использования. Например, с помощью инструментов веб-скрапинга можно извлекать информацию о товарах и ценах из интернет-магазинов.
Читать дальше →
Всего голосов 32: ↑27 и ↓5+22
Комментарии36

Организация памяти процесса

Время на прочтение8 мин
Количество просмотров136K
image
Управление памятью – центральный аспект в работе операционных систем. Он оказывает основополагающее влияние на сферу программирования и системного администрирования. В нескольких последующих постах я коснусь вопросов, связанных с работой памяти. Упор будет сделан на практические аспекты, однако и детали внутреннего устройства игнорировать не будем. Рассматриваемые концепции являются достаточно общими, но проиллюстрированы в основном на примере Linux и Windows, выполняющихся на x86-32 компьютере. Первый пост описывает организацию памяти пользовательских процессов.
Читать дальше →
Всего голосов 28: ↑25 и ↓3+22
Комментарии12

Путешествие по Стеку. Часть 1

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


В предыдущих материалах мы рассмотрели размещение программы в памяти – одну из центральных концепций, касающихся выполнения программ на компьютерах. Теперь обратимся к стеку вызовов – рабочей лошадке большинства языков программирования и виртуальных машин. Нас ожидает знакомство с удивительными вещами вроде функций-замыканий, переполнений буфера и рекурсии. Однако всему свое время – в начале нужно составить базовое представление о том, как работает стек.
Читать дальше →
Всего голосов 47: ↑44 и ↓3+41
Комментарии15

Как централизованно и удаленно устанавливать ПО на ПК и мобильные устройства в компании

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


Эффективность работы компании, а также и ее безопасность, напрямую зависят от программного обеспечения, используемого на рабочих станциях, серверах и мобильных устройствах ее сотрудников. С другой стороны, «лишнее» ПО может отвлекать сотрудников от выполнения своих обязанностей, а также создавать дополнительные риски безопасности. Как можно централизованно и удаленно устанавливать требуемое ПО с помощью RMM-решений?
Читать дальше →
Всего голосов 8: ↑8 и ↓0+8
Комментарии0

Создание и тестирование Firewall в Linux, Часть 2.1. Введение во вторую часть. Смотрим на сеть и протоколы. Wireshark

Время на прочтение4 мин
Количество просмотров16K
Содержание первой части:


Содержание второй части:

2.1 — Введение во вторую часть. Смотрим на сеть и протоколы. Wireshark.
2.2 — Таблицы Firewall. Transport Layer. Структуры TCP, UDP. Расширяем Firewall.
2.3 — Расширяем функциональность. Обрабатываем данные в user space. libnetfilter_queue.
2.4 — Бонус. Изучаем реальную Buffer Overflow атаку и предотвращаем с помощью нашего Firewall'а.
Читать дальше →
Всего голосов 17: ↑16 и ↓1+15
Комментарии4

Self-contained дистрибуция .NET Core приложений

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

Если вы вдруг пропустили, то .NET теперь open source, а .NET Core это бесплатный, open source, кроссплатформенный фреймворк, который вы можете скачать и запустить за время <10 минут. Вы можете получить его на Mac, Windows и на пол-дюжине Unix-ов с сайта dot.net Попробуйте его вместе с бесплатной, кроссплатформенной Visual Studio Code и вы будете писать на C# и F# всегда и везде.
Читать дальше →
Всего голосов 44: ↑42 и ↓2+40
Комментарии19
1
23 ...

Информация

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