Search
Write a publication
Pull to refresh
48
0
Артём Гапченко @artemgapchenko

Android Dev

Send message

2 «простых» вопроса по джаве

Reading time3 min
Views64K

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

Когда-то давно на хабре была пара статей как не надо писать на java с интересными задачками по java.
Часть 1, Часть 2
Они очень интересные, но, к сожалению, автор не стал продолжать.

Представляю вашему вниманию еще 2 задачки (на большее не хватило сил. Оказывается, писать статьи не так-то просто.)

В конце статьи, разумеется, будут ответы с разъяснениями, а также дополнительные задания для самых сильных.
Читать дальше →

Выступление Эдварда Йордона на RCC 2013: «Прошлое, настоящее и будущее»

Reading time12 min
Views9.4K


Как уже знает большинство из наших читателей, одним из спикеров недавно прошедшего финала Russian Code Cup был Эдвард Йордон (Edward Yourdon).
Скрытый текст
Пионер в разработке методологии программирования и автор метода Йордона, член Компьютерного зала славы и автор бестселлеров по практике программирования, в числе которых культовый «Путь камикадзе».

В этом посте мы хотели бы дать несколько вольное изложение основных идей, о которых господин Йордон говорил в своём выступлении на RCC.
Читать дальше →

Tips & tricks for MySQL Developers. Работа с SQL

Reading time10 min
Views51K

Эта статья задумана мной как сборник некоторых интересных моментов по использованию и оптимизации SQL запросов в БД MySQL, на мой взгляд, плохо освещенных в интернете. Так, из статьи вы узнаете о конструкции with rollup, и о том, как переписать подзапросы in и not in на join'ы, а так же обновление и удаление данных в нескольких таблицах — одним запросом, и многое другое. Начнем по порядку.
Читать дальше →

Автоматическая очистка старых драйверов, или выжмем немного места из Windows 7

Reading time6 min
Views233K
В один прекрасный (или печальный, кому как) день мне надоело, что у меня периодически заканчивается место на ноутбуке. Да, я в курсе, что жёсткие диски сейчас дешевы, но это для меня не выход, потому что:
  • У меня SSD, а он всё-таки подороже будет, чем обычные HDD (объём моего текущего SSD — 120 гигов)
  • Ноутбук рабочий, соответственно данные на нём тоже, должны быть шифрованы, всё такое, поэтому самопальный и не утверждённое работодателем носитель втыкать не стоит
  • Я жадный :)

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

CodeNotes — победитель Clojure Cup 2013

Reading time2 min
Views23K
Мы сделали это.
Российский проект CodeNotes за авторством Грошева Дмитрия (si14) и Пантюхова Александра (alwxndr) из Санкт-Петербурга, Дину Александра (zloy_alu) из Тюмени и Сорокоумова Александра из Мюнхена занял первое место на хакатоне Clojure Cup 2013.

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

Разработка плагина IntelliJ IDEA. Часть 1

Reading time10 min
Views51K
За последнее время у меня накопилось достаточно материалов по разработке плагинов для IntelliJ IDEA, чем и собираюсь поделиться с хабрасообществом.

Среда разработки и инфраструктура


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

Для разработки плагинов подойдет любая современная версия Intellij IDEA – она уже включает в себя полный набор необходимого инструментария.
Читать дальше →

Python Meetup

Reading time2 min
Views14K
image

Всем привет!

Август – это, как известно, «последний вагон» для тех, кто хочет успеть отправиться «на юга». Не побоявшись сезона отпусков мы решили проводить третий митап на около-python-овские темы. Тем более, что с темами докладов повезло. Рассмотрели поведение некоторых опасных конструкций в Python, опробовали функциональный стиль программирования и рассмотрели словари в Python. Кроме того, среди докладчиков был Никита Лесников со второй частью своей презентации о внутренностях интерпретатора Python. Все видео этих докладов – прямо сейчас на youtube-экранах под катом.
Читать дальше →

Лучшие выступления Ричарда Хикки

Reading time1 min
Views25K
Хикки
Рич Хикки произноситит классные, дающие пищу для размышления выступления. Считается, почти всем, если не поголовно, программистам надо их услышать и увидеть. Если вы не интересуетесь Clojure, лучше смотреть с конца.

  • Are We There Yet? – 2009 -размышления о том, правилен ли текущий подход к реализации ООП. Обсуждается много вопросов о проектировании Clojure.
Читать дальше →

Ненормальное функциональное программирование на python

Reading time7 min
Views45K

После просмотра курса Programming Languages и прочтения Functional JavaScript захотелось повторить все эти крутые штуки в python. Часть вещей получилось сделать красиво и легко, остальное вышло страшным и непригодным для использования.

Статья включает в себя:
  • немного непонятных слов;
  • каррирование;
  • pattern matching;
  • рекурсия (включая хвостовую).


Статья рассчитана на python 3.3+.
Читать дальше →

Semantic UI — почти альтернатива Bootstrap

Reading time1 min
Views82K
image
Наткнулся сегодня на одну интересную штуку.
Semantic UI — это фреймворк для создания переносимых интерфейсов, который поможет повторно использовать элементы UI в своих проектах. Такая себе альтернатива Bootstrap.
Небольшой пример — если вы хотите добавить в свой проект что-то похожее на кнопку

просто воспользуйтесь следующими элементами:
semantic add button
semantic add icon
Читать дальше →

История открытых данных и Хакатон Яндекса

Reading time14 min
Views17K
14 — 15 сентября в Москве пройдёт первый Хакатон Яндекса, участники которого будут два дня и две ночи создавать проекты на основе открытых государственных данных с помощью технологий Яндекса.

Я уже много лет занимаюсь тем, чтобы у российских разработчиков рос интерес к работе с открытыми данными. Именно для этого создан конкурс Apps4Russia, организованный некоммерческим партнерством «Информационная культура». В этом году в нем появилась номинация для тех, кто создает приложения на отрытых данных и технологиях Яндекса. Эти события подтолкнули систематизированно рассказать здесь об истории открытых данных, их источниках, примерах использования и многих других важных вещах.

image

Это график из ЖЖ eugenyboger. То, что сейчас мы можем узнать подробные результаты выборов по каждому участку, — это норма, а еще совсем недавно это было не так даже в очень развитых странах.
Читать дальше →

Python. Неочевидное поведение некоторых конструкций

Reading time4 min
Views35K
Рассмотрены примеры таких конструкций + некоторые очевидные, но не менее опасные конструкции, которых в коде желательно избегать. Статья рассчитана на python программистов с опытом 0 — 1,5 года. Опытные разработчики могут в коментах покритиковать или дополнить своими примерами.
Читать дальше →

Разбор регулярных выражений

Reading time1 min
Views102K


Хочу просто поделиться недавно найденным сервисом для работы с регулярными выражениями. Да, это еще один сервис. Но у него есть особенность — он позволяет не только составлять регулярные выражения, но и помогает разбирать уже написанные — эдакий regexp-декомпилятор.
Сервис называется Regex101.

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

Второй Python meetup: чего ждать от PEP и стоит ли стрелять себе в ногу?

Reading time2 min
Views13K
Воодушевившись большим количеством слушателей июньского митапа, мы решили проводить его каждый месяц. Как итог – вторая встреча «питонщиков» в пятницу 26 июля. В этот раз мы (более 100 участников!) прошлись по наиболее популярным Python-библиотекам, покопались во внутренностях интерпретатора, а также разобрались в создании классов и объектов. Все подробности в must-see видео.

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

Python for Programmers

Reading time1 min
Views31K
Alex Martelli Многие знакомы с выступлением Алекса Мартелли (Alex Martelli) на Google Tech Talk под названием Python for Programmers (слайды) — в нём он чётко и лаконично рассказывает основы Питона для тех, кто уже умеет программировать, например на C, С++ или Java. По его презентации я сам учил Питон четыре года назад, перед тем как начать использовать его в преподавании программирования на матмехе СПбГУ.

Сегодня хочу представить вам интерактивный вариант этой презентации — онлайн мини-курс Python for Programmers, созданный и опубликованный под лицензией Creative Commons с разрешения Алекса. Мы добавили к его презентации интерактивных упражнений, обновили материал с Python 2.5 до Python 3.3, добавили информацию по актуальным библиотекам и разнице между 2 и 3 версиями Питона.
Читать дальше →

Python изнутри. Структуры процесса

Reading time7 min
Views22K
1. Введение
2. Объекты. Голова
3. Объекты. Хвост
4. Структуры процесса

Продолжаем перевод цикла статей о внутренностях Питона. Если вы хоть раз задавались вопросом «а как же оно устроено?», обязательно читайте. Автор проливает свет на многие интересные и важные аспекты устройства языка.

В предыдущих частях мы говорили об объектной системе Питона. Тема ещё не исчерпана, но давайте пойдём дальше.

Когда я размышляю о реализации Питона, я представляю себе огромный конвейер, по которому движутся коды машинных операций, которые затем попадают в гигантский завод, где повсюду возвышаются градирни и башенные краны, — и меня просто переполняет желание подойти поближе. В этой части мы поговорим о структурах состояния интерпретатора и состояния потока (./Python/pystate.c). Сейчас нам нужно заложить фундамент, чтобы потом было легче понять, как исполняется байткод. Совсем скоро мы узнаем, как устроены фреймы, пространства имён и объекты кода. Но для начала давайте поговорим о тех структурах данных, которые связывают всё воедино. Учтите, я предполагаю наличие хотя бы поверхностного понимания устройства операционных систем и знания хотя бы таких терминов, как ядро, процесс, поток и т. п.

Во многих операционных системах пользовательский код исполняется в потоках, которые живут в процессах (это верно для большинства *nix-систем и для «современных» версий Windows). Ядро ответственно за подготовку и удаление процессов и потоков, а также за определение того, какой поток на каком логическом CPU будет исполняться. Когда процесс вызывает функцию Py_Initialize, на сцену выходит другая абстракция, интерпретатор. Любой Python-код, запускаемый в процессе, привязан к интерпретатору. Об интерпретаторе можно думать как об основе всех прочих концепций, которые мы будем обсуждать. Питон поддерживает инициализацию двух (и более) интерпретаторов в одном процессе. Несмотря на то, что эта возможность редко используется на практике, я буду её учитывать. Как было сказано, код исполняется в потоке (или потоках). Не исключение и виртуальная машина Питона (VM). При этом сама VM имеет поддержку потоков, т.е. у Питона есть своя абстракция для представления потоков. Реализация этой абстракции полностью полагается на механизмы ядра. Таким образом, и ядро, и Питон имеют представление о каждом из Python-потоков. Эти потоки управляются ядром и исполняются как отдельные потоки параллельно всем прочим потокам в системе. Ну… почти параллельно.

До сих пор мы не обращали внимания на слона в нашей посудной лавке.
Читать дальше →

Обработка ошибок в стиле panic/defer на Python

Reading time2 min
Views10K
Обработка ошибок в Go построена не на закостенелом механизме исключений, а на новом интересном механизме отложенных обработчиков. В качестве интересного исследования я реализовал такую обработку ошибок на Python. Кому интересно, заходите.

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

Повесть о настоящем Интернете

Reading time13 min
Views176K
Abstract: Рассказ про устройство Интернета, как «сети сетей» в виде текста для чтения, без двоичной системы счисления и нюансов BGP. Большая часть расказа будет не про процесс общения ноутбука с точкой доступа, а о том, что происходит после того, как данные пройдут «шлюз по умолчанию». Предупреждаю, букв много.

Вступление


Маленький провокативный вброс: ни один из читателей этой статьи к Интернету не подключен. Все подключены к сети своего провайдера, и не более. Подключение к Интернету дорогое, его сложно делать, вам потребуется очень крутое оборудование, несколько договоров с несколькими операторами связи и квалифицированные сотрудники. Простому домашнему пользователю это никак и никогда не светит. Не говоря уже о том, что в Интернете может быть не больше 4 миллиардов подключившихся (а до недавнего времени было даже «не более 65536») [1]. Даже если весь Интернет перейдёт на ipv6, это число не поменяется.

Вот число подключившихся к Интернету [2]:

По оси Y — число в штуках. Штуках, штуках. И вас в этом числе не посчитали.

Почему?

Дело в том, что Internet — это, если переводить буквально, «межсетье». Сеть Сетей. И участниками Интернета являются не пользователи (их компьютеры, планшеты, микроволновки с wifi и т.д.), а сети. Сети и только сети участвуют в работе Интернета. Интернет — это то, что связывает разные сети между друг другом.
Читать дальше →

Посты-рекордсмены

Reading time5 min
Views105K
На Хабре я недавно (чуть меньше месяца), до этого Хабр практически не читал. Пришёл, огляделся, походил по тематическим «хабам», почитал «Лучшее за всё время», просмотрел статьи отдельных, заинтересовавших меня персонажей и понял, что для того, чтобы получше понять, как живёт и чем дышит это замечательное сообщество, мне придётся Хабр распарсить и позадавать ему разные вопросы. К тому же, раз уж в своих статьях я писал в основном об автореферентности в разных её проявлениях, как не написать на Хабре статью о Хабре?

Посмотрю, интересно ли это всё кому-либо кроме меня. Если интересно, напишу ещё несколько постов, идей и материала для этого более чем достаточно.

Если я ничего не пропустил в интерфейсе сайта, единственные списки самых-самых, которые можно посмотреть — это общий рейтинг пользователей и список статей, т.н. «Лучшее за всё время». Оба списка отсортированы по рейтингу (пользователей и статей, соответственно). Между тем, существует ещё куча параметров, по которым было бы интересно всё отранжировать.
Читать дальше →

Information

Rating
Does not participate
Date of birth
Registered
Activity