Search
Write a publication
Pull to refresh
-9
0.1
Send message

Linux-разработка в Windows с WSL и Visual Studio Code Remote

Reading time2 min
Views34K
Работа с VS Code Remote и Windows Subsystem for Linux (WSL) дает возможность использовать полнофункциональную среду разработки Linux на ноутбуке или десктопе с предустановленной Windows. В этом материале рассмотрим то, как использовать эти инструменты для разработки приложений на Python в Linux.

image

Мелкая питонячая радость #6: OpenAI Gym — играем в игры и управляем роботами

Reading time1 min
Views9.3K

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


Сегодня мы проветрим мозги и разомнем дряблеющие от скуки синапсы с помощью кое-чего интересного — OpenAI Gym.


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

Вирус Lurk взламывал банки, пока его писали обычные удаленщики по найму

Reading time5 min
Views19K

Отрывок из книги «Вторжение. Краткая история русских хакеров»


image

В мае этого года в издательстве Individuum вышла книга журналиста Даниила Туровского «Вторжение. Краткая история русских хакеров». В ней собраны истории с темной стороны российской IT-индустрии — о ребятах, которые полюбив компьютеры, научились не просто программировать, а грабить людей. Книга развивается, как и самое явление — от подростковых хулиганств и форумных тусовок до силовых операций и международных скандалов.

Материалы Даниил собирал несколько лет, некоторые истории выходили на «Медузе», за пересказы статей Даниила Эндрю Крамер из New York Times в 2017 году получил Пулитцеровскую премию.

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

С разрешения издательства, мы публикуем небольшой отрывок о группировке Lurk, которая грабила российские банки в 2015-16 годах.
Читать дальше →

Удалённая разработка в VS Code: ваша жизнь никогда не будет прежней

Reading time3 min
Views70K

У нас в TestMace Visual Studio Code является одним из самых популярных инструментов. И тем более отрадно, что он развивается семимильными шагами. Вашему вниманию предлагается перевод статьи об еще одной вкусной фиче, которая доступна пока только в VS Code Insiders.


Согласен, немного переборщил с заголовком, просто меня переполняют эмоции. Я решил поделиться своими первыми впечатлениями от удалённой разработки в VS Code, на момент написания статьи доступной в VS Code Insiders.

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

Книга «Прикладной анализ текстовых данных на Python»

Reading time7 min
Views12K
image Технологии анализа текстовой информации стремительно меняются под влиянием машинного обучения. Нейронные сети из теоретических научных исследований перешли в реальную жизнь, и анализ текста активно интегрируется в программные решения. Нейронные сети способны решать самые сложные задачи обработки естественного языка, никого не удивляет машинный перевод, «беседа» с роботом в интернет-магазине, перефразирование, ответы на вопросы и поддержание диалога. Почему же Сири, Алекса и Алиса не хотят нас понимать, Google находит не то, что мы ищем, а машинные переводчики веселят нас примерами «трудностей перевода» с китайского на албанский? Ответ кроется в мелочах – в алгоритмах, которые правильно работают в теории, но сложно реализуются на практике. Научитесь применять методы машинного обучения для анализа текста в реальных задачах, используя возможности и библиотеки Python. От поиска модели и предварительной обработки данных вы перейдете к приемам классификации и кластеризации текстов, затем приступите к визуальной интерпретации, анализу графов, а после знакомства с приемами масштабирования научитесь использовать глубокое обучение для анализа текста.

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

Конкурс от РОСНАНО: проходите онлайн-курс по современной микроэлектронике, потом практический тур с ПЛИС, получаете приз

Reading time1 min
Views2.7K
Мероприятие для продвинутых школьников: сначала онлайн-курс с профориентацией по разработке современных микросхем (части 1, 2, 3), а потом практический семинар по цифровой схемотехнике и языку описания аппаратуры Verilog, с синтезом на ПЛИС/FPGA. Те, кто отличатся, получат в качестве призов платы.

На видео приглашение на семинар перед тарелкой штаб-квартиры Apple, которое начинается со слов «что знают проектировщики айфонов того чего не знаете вы?» Помогаем школьникам, чтобы они победили эту тарелку своими бизнесами, когда вырастут.

Подробности семинара на сайте STEMford

Подробности семинара на Вконтакте

Что делают в офисе инженеры в Apple и Intel: профориентационный онлайн-курс современной микроэлектроники для школьников

Reading time6 min
Views13K
Недавно вышел бесплатный онлайн-курс в трех частях под названием «Как работают создатели умных наночипов» (1, 2, 3). Он предназначен для профориентации школьников и отличается максимальной конкретностью: вот так выглядит распределение работы в команде проектирования микросхемы, вот на таких концепциях проектирования на уровне регистровых передач построена разработка, и вот такие алгоритмы используются для определения, на сколько мегагерц будет работать проектируемый процессор для компьютера или автомобильной электроники.

Кроме теоретической профориентации, курс можно использовать для отбора школьников на практические летние школы по ПЛИС-ам и проектированию процессоров. Такая школа планируется в этом году в Зеленограде, ее прототип был опробован на Летней школе юных программистов в Новосибирске и на Неделе электроники для школьников в Киеве в позапрошлом году. Можно также попробовать сделать хакатон по аппаратно-реализуемым нейросетям и аппаратной реализации игр с выводом на VGA дисплей (об этом дальше в посте).


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

Математика, помирившая Ньютона с квантовым миром

Reading time11 min
Views14K
image

Как профессор математики перестал бояться и полюбил алгебраическую геометрию.

На шестом десятке уже поздно становиться настоящим специалистом по алгебраической геометрии, но мне наконец-то удалось в неё влюбиться. Как и следует из её названия, этот раздел математики использует для изучения геометрии алгебру. Примерно в 1637 году Рене Декарт заложил фундамент этой области знаний, взяв плоскость, мысленно нарисовав на ней сетку и обозначив координаты за x и y. Можно записать уравнение вида x2+ y2 = 1, и получить кривую, состоящую из точек, координаты которых удовлетворяют этому уравнению. В этом примере мы получим круг.

Для того времени это была революционная идея, потому что она позволяет нам системным образом преобразовывать вопросы геометрии в вопросы об уравнениях, которые при достаточном знании алгебры можно решить. Некоторые математики занимались этой великолепной областью всю свою жизнь. Мне она до последнего времени не нравилась, но я смог связать её с моим интересом к квантовой физике.
Читать дальше →

«Анализ данных на Python» в двух частях

Reading time5 min
Views59K
Курсы по анализу данных в CS центре читает Вадим Леонардович Аббакумов — кандидат физ.-мат. наук, он работает главным экспертом-аналитиком в компании Газпромнефть-Альтернативное топливо.

Лекции предназначены для двух категорий слушателей. Первая — начинающие аналитики, которым сложно начинать с изучения, например, книги The Elements of Statistical Learning. Курс подготовит их к дальнейшей работе. Вторая — опытные аналитики, не получившие систематического образования в области анализа данных. Они могут заполнить пробелы в знаниях. С прошлого года на занятиях используется язык программирования Python.

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

Приятного просмотра!

Domain-driven design: рецепт для прагматика

Reading time21 min
Views76K

Почему к DDD обычно подходят не с той стороны? А с какой стороны надо? Какое отношение ко всему этому имеют жирафы и утконосы?

Специально для Хабра — текстовая расшифровка доклада «Domain-driven design: рецепт для прагматика». Доклад был сделан на .NET-конференции DotNext, но может пригодиться не только дотнетчикам, а всем интересующимся DDD (мы верим, вы осилите пару примеров кода на C#). Видеозапись доклада также прилагается.

Julia. Генераторы отчётов и документации

Reading time13 min
Views11K


Одной из актуальных проблем во все времена, является проблема подготовки отчётов. Поскольку Julia — язык, пользователи которого непосредственно связаны с задачами анализа данных, подготовки статей и красивых презентаций с результатами расчётов и отчётов, то эту тему просто нельзя обойти мимо.


Изначально эта статья планировалась набор рецептов для генерации отчётов, однако рядом с отчётами находится тема документирования, с которой у генераторов отчётов много пересечений. Поэтому сюда включены средства по критерию возможности внедрения выполняемого кода на Julia в шаблон с некоторой разметкой. Наконец, отметим, что в обзор вошли генераторы отчётов как реализованные на самой Julia, так и средства, написанные на других языках программирования. Ну и, естественно, не остались без внимания некоторые ключевые моменты самого языка Julia, без которых может быть не ясно, в каких случаях и какие средства стоит использовать.

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

Обширный обзор собеседований по Python. Советы и подсказки

Reading time10 min
Views190K

Всем привет!


Кратко о себе. По образованию я математик, а вот по профессии — программист. В сфере разработки с 2006 года. Хотя, поскольку программирование начали изучать ещё в школе, свои первые программки и игры я начал писать ещё в школе (примерно, с 2003). Так сложилось, что пришлось выучить и поработать на нескольких языках. Если не брать во внимание ВУЗ-овские лекции по С, С++, Бэйсику, Паскалю и Фортрану, то реально я работал с Delphi (более 6 лет), PHP (более 5 лет), Embedded (Atmel + PIC около 2.5 лет) и последним временем Python + чуть-чуть Scala. Конечно же без баз данных тоже никак не обойтись.


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

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

PyTest

Reading time24 min
Views394K

Предисловие


По историческому призванию я SQL-щик. Однако судьба занесла меня на BigData и после этого понесла кривая — я освоил и Java, и Python, и функциональное программирование (изучение Scala стоит в списке). Собственно на одном из кусков проекта встала необходимость тестирования кода на Python. Ребята из QA посоветовали для этих целей PyTest, но даже они затруднились толком ответить чем этот зверь хорош. К сожалению, в русскоязычном сегменте информации по данному вопросу не так уж и много: как это используют в Yandex да и все по-хорошему. При этом описанное в этой статье выглядит достаточно сложно для человека начинающего путешествие по этой стезе. Не говоря уже об официальной документации — она приобрела для меня смысл лишь после того, как я разобрался с самим модулем по другим источникам. Не спорю, там написаны интересные вещи, но, к сожалению, совсем не для старта.

Юнит-тестирование Python


Что это и для чего рассказывать смысла не вижу — Википедия все равно знает больше. По поводу существующих модулей для Python хорошо описано на Хабре.

Вводная по необходимым знаниям


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

Преимущества и недостатки PyTest


1) Независимость от API (no boilerplate). Как код выглядит в том же unittest:

Код
import unittest

class TestUtilDate(unittest.TestCase):
    def setUp(self):
        #init_something()
        pass
        
    def tearDown(self):
        #teardown_something()
        pass
        
    def test_upper(self):
        self.assertEqual('foo'.upper(), 'FOO')
        
    def test_isupper(self):
        self.assertTrue('FOO'.isupper())
        
    def test_failed_upper(self):
        self.assertEqual('foo'.upper(), 'FOo')
        
if __name__ == '__main__':
    suite = unittest.TestLoader().loadTestsFromTestCase(TestUtilDate)
    unittest.TextTestRunner(verbosity=2).run(suite)


То же самое в PyTest:

Код
import pytest

def setup_module(module):
    #init_something()
    pass

def teardown_module(module):
    #teardown_something()
    pass

def test_upper():
    assert 'foo'.upper() == 'FOO'
    
def test_isupper():
    assert 'FOO'.isupper()
    
def test_failed_upper():
    assert 'foo'.upper() == 'FOo'


2) Подробный отчет. В том числе выгрузка в JUnitXML (для интеграции с Jenkins). Сам вид отчета может изменяться (включая цвета) дополнительными модулями (о них будет позднее отдельно). Ну и вообще цветной отчет в консоли выглядит удобнее — красные FAILED видны сразу.

image

3) Удобный assert (стандартный из Python). Не приходится держать в голове всю кучу различных assert'ов.

4) Динамические фикстуры всех уровней, которые могут вызываться как автоматически, так и для конкретных тестов.

5) Дополнительные возможности фикстур (возвращаемое значение, финализаторы, область видимости, объект request, автоиспользование, вложенные фикстуры)

6) Параметризация тестов, то есть запуск одного и того же теста с разными наборами параметров. Вообще это относится к пункту 5 «Дополнительные возможности фикстур», но возможность настолько хороша, что достойна отдельного пункта.

7) Метки (marks), позволяющие пропустить любой тест, пометить тест, как падающий (и это его ожидаемое поведение, что полезно при разработке) или просто именовать набор тестов, чтобы можно было запускать только его по имени.

8) Плагины. Данный модуль имеет достаточно большой список дополнительных модулей, которые можно установить отдельно.

9) Возможность запуска тестов написанных на unittest и nose, то есть полная обратная совместимость с ними.

Про недостатки, пусть их и не много, могу сказать следующее:

1) Отсутствие дополнительного уровня вложенности: Для модулей, классов, методов, функций в тестах есть соответствующий уровень. Но логика требует наличие дополнительного уровня testcase, когда та же одна функция может иметь несколько testcase'ов (например, проверка возращаемых значений и ошибок). Это частично компенсируется дополнительным модулем (плагином) pytest-describe, но там встает проблема отсутствия соответствующего уровня фикстуры (scope = “describe”). С этим конечно можно жить, но в некоторых ситуациях может нарушать главный принцип PyTest — «все для простоты и удобства».

2) Необходимость отдельной установки модуля, в том числе в продакшене. Все-таки unittest и doctest входят в базовый инструментарий Python и не требуют дополнительных телодвижений.

3) Для использования PyTest требуется немного больше знаний Python, чем для того же unittest (см. «Вводная по необходимым знаниям»).

Подробное описание модуля и его возможностей под катом.
Читать дальше →

Книга “Электричество шаг за шагом” от Рудольфа Свореня

Reading time17 min
Views60K


Сегодня день информатики, и кто-то возможно помнит первые уроки по информатике в школе, и свой первый учебник “Основы информатики и вычислительной техники” (1990 год):

Открыть

В числе авторов этого учебника был — Р.А. Сворень.

Про легендарного человека — Рудольфа Анатольевича Свореня мы делали серию публикаций (раз, два), и в том числе про его замечательную книгу “Электроника шаг за шагом”, про то как она изменила жизнь людей. Изначально была озвучена идея переиздания этой полюбившийся многим книги (на данный момент мы собрали почти 2000 заявок от людей, кто ждут переиздание).

Книги Рудольфа Анатольевича обладают удивительным качеством — изложение материала настолько доступно и понятно, от простого к сложному, что всё становится “по полочкам” и по окончании книги люди действительно начинают осознанно и самостоятельно разбираться в предмете.

Есть хорошие новости — в ближайшее время готовится к выходу из печати новая книга “Электричество шаг за шагом” — на КДПВ — картина из неё. Эта картина показывает то цельное восприятие мира, что было у Рудольфа Анатольевича — и “электричество” для него был важным фрагментом Картины Мира, про который он хотел так же рассказать.

Книга “Электричество шаг за шагом” ещё не поступала в продажу (хотя была готова в 2012 году), и у вас есть возможность купить книгу — сделать предзаказ.

Подробности под катом.
Читать дальше →

Байт-машина для форта (и не только) по-индейски

Reading time27 min
Views15K
image

Да-да, именно «байт» и именно по индейски (не по индийски). Начну по порядку. В последнее время тут, на Хабре, стали появляться статьи о байт-коде. А когда-то давным-давно я развлекался тем, что писал форт-системы. Конечно, на ассемблере. Они были 16-ти разрядными. На x86-64 никогда не программировал. Даже с 32 поиграться не удалось. Вот и пришла такая мысль — а почему бы нет? Почему бы не замутить 64х разрядный форт, да ещё с байт-кодом? Да еще и на Linux, где я тоже ничего системного не писал.

У меня есть домашний сервер с Linux. В общем, я немного погуглил и узнал, что ассемблер на Linux называется GAS, а команда as. Подключаюсь по SSH к серверу, набираю as — есть! Он у меня уже установлен. Ещё нужен компоновщик, набираю ld — есть! Вот так, и попробуем написать что-нибудь интересное на ассемблере. Без цивилизации, только лес, как у настоящих индейцев :) Без среды разработки, только командная строка и Midnight Commander. Редактор будет Nano, который висит у меня на F4 в mc. Как там поет группа «Ноль»? Настоящему индейцу нужно только одного… Что еще нужно настоящему индейцу? Конечно, отладчик. Набираем gdb — есть! Ну что же, нажмем Shift+F4, и вперед!
Читать дальше →

Принципы SOLID, о которых должен знать каждый разработчик

Reading time11 min
Views391K
Объектно-ориентированное программирование принесло в разработку ПО новые подходы к проектированию приложений. В частности, ООП позволило программистам комбинировать сущности, объединённые некоей общей целью или функционалом, в отдельных классах, рассчитанных на решение самостоятельных задач и независимых от других частей приложения. Однако само по себе применение ООП не означает, что разработчик застрахован от возможности создания непонятного, запутанного кода, который тяжело поддерживать. Роберт Мартин, для того, чтобы помочь всем желающим разрабатывать качественные ООП-приложения, разработал пять принципов объектно-ориентированного программирования и проектирования, говоря о которых, с подачи Майкла Фэзерса, используют акроним SOLID.



Материал, перевод которого мы сегодня публикуем, посвящён основам SOLID и предназначен для начинающих разработчиков.
Читать дальше →

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

Reading time13 min
Views101K


Благодаря торговым сетям и интернет магазинам разнообразие предлагаемой к продаже аудиоаппаратуры зашкаливает за все разумные пределы. Каким образом выбрать аппарат, удовлетворяющий вашим потребностям к качеству, существенно не переплатив?

Если вы не аудиофил и подбор аппаратуры не является для вас смыслом жизни, то самый простой путь — уверенно ориентироваться в технических характеристиках звукоусилительной аппаратуры и научиться извлекать полезную информацию между строк паспортов и инструкций, критически относясь к щедрым обещаниям. Если вы не ощущаете разницы между dB и dBm, номинальную мощность не отличаете от PMPO и желаете наконец узнать, что такое THD, также сможете найти интересное под катом.


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

Интермодуляционные искажения в усилителях звуковой частоты и ООС — осторожно, опасные связи

Reading time11 min
Views47K


На аудиофильских сайтах принято пугать посетителей интермодуляционными искажениями, однако поскольку большинство публикаций на эту тему широко использую технологию копипаста, понять почему эти искажения возникают и чем так страшны очень сложно. Сегодня я постараюсь в меру своих способностей и объёма статьи отразить именно природу этих стрРрашных ИМИ.

Тема искажений сигнала в УМЗЧ была поднята в моей предыдущей статье, но в прошлый раз мы лишь слегка коснулись линейных и нелинейных искажений. Сегодня попробуем разобраться в наиболее неприятных на слух, трудноуловимых для анализа и сложноустранимых для проектировщиков УНЧ интермодуляционных искажениях. Причинах их возникновения и взаимосвязи с обратной связью сорри за каламбур.


Нашли что-то интересное в содержании? Добро пожаловать под кат

Самый полный русскоязычный перевод Гарвардского курса по программированию CS50 2015, бесплатно на YouTube

Reading time2 min
Views55K
В этой статье я хочу немного рассказать о самом лучшем в мире курсе по программированию.

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

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

image

Information

Rating
5,650-th
Registered
Activity