Главная Программирование

Программирование

Xakep #233

Олимпиады по программированию. Куда податься, если ты молод, умен и хочешь выиграть несколько тысяч долларов

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

Xakep #227

Python для микроконтроллеров. Учимся программировать одноплатные компьютеры на языке высокого уровня

Шутники говорят, что после трудового дня за компьютером типичный программист едет домой, садится за ПК и таким образом отдыхает. А ведь истина на самом деле куда ужаснее этой шутки: многие из нас, приходя с работы, посвящают оставшееся до сна время... программированию микроконтроллеров. :) Обывателям не понять, но Arduino, Teensy или ESP — действительно очень неплохое хобби. Их единственный недостаток — необходимость программировать на достаточно низком уровне, если не на Assembler, то на Arduino C или Lua. Но теперь в списке ЯП для микроконтроллеров появился Python. Точнее, MicroPython. В этой статье я постараюсь максимально продемонстрировать его возможности.

Xakep #225

Малварь для Android за полчаса. Отслеживаем местоположение, читаем SMS, пишем аудио и делаем фото

Android принято называть рассадником вирусов и бэкдоров. Каждый день здесь выявляют более 8 тысяч новых образцов малвари. И эти цифры постоянно растут. Но задумывался ли ты, как эта малварь работает? Сегодня мы разберемся с этим, изучив приложение для Android, способное собирать информацию об устройстве, его местоположении, делать фотографии и записывать аудио. И все это с удаленным управлением.

Спецпроект

Как устроиться на работу программистом? Пошаговая инструкция по поиску работы

Мало научиться программировать — желательно еще и чтобы за твои знания и умения платили. С чего начать, как и где искать работу, тебе подскажет эта статья. Итак, приступим!

Машинное обучение. Разработка на R: тонкости при использовании циклов

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

Спецпроект

Интенсивная подготовка будущих разработчиков

Мы продолжаем рассказывать, как можно получить IT-профессию. Почему это круто и почему именно IT, мы уже писали. А сегодня поговорим о том, как стать разработчиком, да еще и бесплатно. GeekBrains предлагает три интенсивных курса, позволяющих превратить любого «кнопкодава» в программиста. Посмотрим, так ли хороши эти курсы на самом деле, как нам обещают.

Xakep #214

Разбираемся с фреймворком ReactiveX и пишем в реактивном стиле для Android

Мир ООП-разработки вообще и язык Java в частности живут очень активной жизнью. Тут есть свои модные тенденции, и сегодня разберем один из главных трендов сезона — фреймворк ReactiveX. Если ты еще в стороне от этой волны — обещаю, она тебе понравится! Это точно лучше, чем джинсы с завышенной талией :)

Спецпроект

Почему айтишник — это круто, или Иван Васильевич меняет профессию

Жизнь — штука сложная. Потратив пять лет на обучение в престижном ВУЗе, еще год на поиск работы, ты вдруг заметил, что выбранная тобою 5 лет назад профессия скучная, удовольствия не приносит, а перспективы слишком натянуты. Так, к сожалению, бывает. В этой заметке мы попробуем ответить на почти философский вопрос «что делать?».

Xakep #214

Что интересного произошло с нашими программерами за месяц. Колонка авторов

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

Xakep #214

Программируем на языке R: как правильно писать циклы для обработки больших объемов данных

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

Xakep #211

Виртуальная реальность для программиста, часть 2: MS HoloLens

В прошлой статье я сделал общий обзор средств разработки для наиболее интересных устройств виртуальной реальности и дал торжественное обещание в следующем материале прицельно рассказать тебе про Microsoft HoloLens. Что ж, пора сдержать слово!

Xakep #211

Математика для программиста, часть 3. Создаем вероятностную структуру данных на Java

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

Xakep #211

Как перестать кодить на Java и начать жить: сто* причин изучить Kotlin

Ребята из JetBrains сделали очень много крутых вещей, среди которых Kotlin — молодой, но очень перспективный язык программирования под JVM и Android. В этой статье я покажу, чем этот язык может заинтересовать Android-разработчика и заставить его навсегда позабыть про Java.

Xakep #209

Многопоточная разработка для Android, часть 2. Раздаем задачи по сервисам

В продолжении темы прошлого номера мы узнаем, каким образом в Android можно генерировать дополнительные потоки и зачем это может понадобиться. Сегодня поговорим о таком компоненте приложения, как сервисы, и опишем их роли в мобильном мире Android. Сервисы и потоки тесно переплетены между собой, поэтому, если ты еще не читал прошлый номер «Хакера», начни с моей статьи, будет полезно!

Xakep #208

Многопоточная разработка для Android, часть 1

При создании мобильного приложения чуть сложнее «Hello, world» почти наверняка требуется скачать что-то из Сети или считать файл с диска. Для стабильной работы программы в целом эти действия должны совершаться в отдельных потоках. Зачем, когда и как генерировать новые потоки в Android — об этом ты узнаешь в этой статье.

Xakep #208

Очерки о математике. Может ли программист обойтись без нее?

Сложную задачу поставила передо мной редакция журнала: на правах действующего программиста и преподавателя высшей школы, с целью борьбы с веб-программистами и прочими верстальщиками раскрыть тему необходимости изучения математики :). Что ж — вызов принят, хотя это и не так просто. Тем более что в последнее время к вопросу «Должен ли программист знать классическую математику?» добавился еще один: «А должен ли data scientist уметь программировать?»

Xakep #204

Атомная бомба для C++ кодера. Обзор набора фреймворков массового поражения

Если коротко, openFrameworks — это проект с открытым исходным кодом на C++, представляющий собой набор укомплектованных инструментов (фреймворков) для разработки кросс-платформенных приложений, не только настольных, но и мобильных. Мы уже знакомы с подобными либами, однако openFrameworks идет еще дальше, предоставляя программисту более широкие возможности.

Xakep #201

Win 10 для программиста: полный гайд по новым фичам

Пока не появился финальный релиз Windows 10 и Visual Studio 2015, мы старались по максимуму подготовить читателя к тем фичам, которые были обещаны Майкрософтом нашему брату-программисту. И вот десятая винда вышла в свет, и ее уже установили миллионы пользователей, среди которых, как мне доподлинно известно, есть программисты :). А это значит, что пора сравнить ожидания и реальность и посмотреть на те возможности, которые нам теперь доступны: Xamarin, Apache Cordova, UWP, поддержка Python, .NET Native, DirectX 12, VS Code, Windows IoT и многое другое. Вперед!

Xakep #201

Тестирование производительности. Узнай, что именно тормозит и что с этим нужно делать

Завершая цикл статей о вычислении производительности софта, хотелось бы рассказать, как правильно проводить перформанс-тестирование (performance testing). Тема становится все более популярной, но при этом далеко не все понимают, что под этим подразумевается. Ведь прежде чем ответить на вопрос «как», нам нужно разобраться с вопросом «что»: что именно нам нужно тестировать?

Xakep #198

Python на стероидах. Измеряем производительность в продакшене без потери скорости

Когда цена за гигабайт памяти составляет копейки (~0,026 доллара за час в облаке от Amazone), а современные процессоры работают все быстрее с каждым месяцем, производительность ПО во многих случаях оставляет желать лучшего. Ведь часто докупить оперативки и/или процессор оказывается дешевле, чем тратить многие человеко-месяцы на тестирование и исправление проблем с производительностью. Но бывает и наоборот — стоит исправить буквально две строчки кода, как все начинает просто летать. Главное — найти эти самые две строчки кода. Здесь все как в старом анекдоте: «взял один доллар за то, что забил гвоздь, и 99 долларов за то, что знал, куда его забить».

Академия C++ #7. Обработка максимальных объемов данных за минимальное время

Чего только не услышишь от апологетов тех же Java или C# про разработку на C/C++! Якобы этот язык устарел и на нем никто не пишет. Вот только когда требуется создать no latency или low latency сервис или нужно сэкономить память и время выполнения узкого места обработки больших объемов данных, то тут же прибегают за помощью к «архаичным» разработчикам на C/C++. Просто потому, что эти ребята умеют вручную управлять памятью и прекрасно представляют, что за начинка у той или иной высокоуровневой операции. Сегодня наша задача — стать на шаг ближе к этим ребятам.

Xakep #197

Повелитель ботов на Android. Восстанавливаем забытые пароли по локальной сети

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

Пишем виджет для Android, который показывает доступность сайта

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

Функциональное программирование: структура и интерпретация. Часть I

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

Передаем звук со «спящего» смартфона на сервер

О том, что стоящий в твоей комнате традиционный телефон с аккуратно лежащей на нем трубкой все равно может за тобой шпионить, известно чуть ли не со времен А. Г. Белла. Смартфоны продвинулись по этой скользкой дорожке значительно дальше. А как все это выглядит с программной точки зрения?

Обзор веб-инструментов для создания приложений без использования Android SDK

Оказывается, для того, чтобы нормально кодить под Android, достаточно знаний HTML5, CSS3 и JavaScript. Конечно, не просто так, а в сочетании с сервисами, обзор которых мы для тебя подготовили. Ну а если ты не понаслышке знаком с PHP (Ruby, ASP.NET), то после прочтения этой статьи, можешь смело предлагать свои услуги по продвинутой мобильной разработке :).

Альтернативные методы трассировки приложений

Трассировка используется во многих видах ПО: в эмуляторах, динамических распаковщиках, фаззерах. Традиционные трейсеры работают по одному из четырех принципов: эмуляция набора инструкций (Bochs), бинарная трансляция (QEMU), патчинг бинарных файлы для изменения потока управления (Pin), либо работа через отладчик (PaiMei, основанный на IDA). Но сейчас речь пойдет о более интересных подходах.

Страница 1 из 212

«Хакер» в соцсетях

Telegram ВКонтакте Twitter Facebook
«ХАКЕР» ДОСТУПЕН ТОЛЬКО В ЭЛЕКТРОННОЙ ВЕРСИИ
Оформи подписку — получи:
  • доступ к платным материалам сайта
  • доступ ко всем номерам PDF
7190 р.
на год
720 р.
на месяц
90 р.
за 1 статью

Еженедельный дайджест

Статьи для подписчиков