• Некоторые репозитории в помощь изучающим и преподающим Python и машинное обучение



      Привет сообществу!

      Я Юрий Кашницкий, раньше делал здесь обзор некоторых MOOC по компьютерным наукам и искал «выбросы» среди моделей Playboy.

      Сейчас я преподаю Python и машинное обучение на факультете компьютерных наук НИУ ВШЭ и в онлайн-курсе сообщества по анализу данных MLClass, а также машинное обучение и анализ больших данных в школе данных одного из российских телеком-операторов.

      Почему бы воскресным вечером не поделиться с сообществом материалами по Python и обзором репозиториев по машинному обучению… В первой части будет описание репозитория GitHub с тетрадками IPython по программированию на языке Python. Во второй — пример материала курса «Машинное обучение с помощью Python». В третьей части покажу один из трюков, применяемый участниками соревнований Kaggle, конкретно, Станиславом Семеновым (4 место в текущем мировом рейтинге Kaggle). Наконец, сделаю обзор попавшихся мне классных репозиториев GitHub по программированию, анализу данных и машинному обучению на Python.

      Читать дальше →
    • Как фрилансеру принимать оплату от зарубежных заказчиков?

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


        Читать дальше →
      • Ортокератология: годовой опыт использования ночных линз

          image

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

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

          Очки


          Очки известны примерно с 13-го века. Линзы, компенсирующие недостатки зрения, находятся в оправе, и болтаются на носу близорукого человека. Раньше люди также использовали такие их варианты, как монокли и пенсне, но сегодня последние уже перешли в разряд атавизмов.

          С этими костылями для глаз я знаком ещё со школы – с того момента, когда стало понятно, что я не вижу надписей на доске даже с первой парты. Думаю, что с этим устройством более-менее знакомы все.

          Плюсы очков

          • кому-то нравится внешний вид человека в очках; насколько я понимаю, многие современные модники-хипстеры даже носят очки без коррекции, просто из-за оправы
          • очки постоянного ношения достаточно сложно где-то оставить или забыть взять с собой в поездку
          • меньше вероятность получить насекомым или другим посторонним предметом в глаз

          Минусы очков

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

          Думаю, что коллеги-очкарики с удовольствием дополнят этот список.
          Читать дальше →
        • И снова о топологической сортировке…


            Приветствую всех читателей Хабра! Решив написать эту статью, я обнаружил на Хабре много материалов по графам и, в частности, по топологической сортировке. Например, здесь довольно подробно описана теоретическая часть и приведены примеры основных алгоритмов. Поэтому не буду повторяться, а расскажу о практической области применения Topological sorting, а точнее, хочу поделиться личным опытом применения этого метода при разработке продуктов DevExpress. Из статьи станут понятны мотивы и причины, побудившие к использованию этого алгоритма. В конце я приведу наш вариант реализации алгоритма для сортировки зависимых объектов.
            Подробности
            • +28
            • 10.3k
            • 7
          • «Спи, моя радость, усни...» или чем опасны проблемы со сном

            Испытываете проблемы со сном? — Вы не одиноки. По оценке Американской Академии медицины сна, 30-35% взрослых жалуются на бессонницу. Чаще это происходит у пожилых людей, у женщин, у людей в состоянии стресса, людей с некоторыми медицинскими проблемами.
            Читать дальше →
          • Бинарные деревья поиска и рекурсия – это просто

            Существует множество книг и статей по данной теме. В этой статье я попробую понятно рассказать самое основное.

            Бинарное дерево — это иерархическая структура данных, в которой каждый узел имеет значение (оно же является в данном случае и ключом) и ссылки на левого и правого потомка. Узел, находящийся на самом верхнем уровне (не являющийся чьим либо потомком) называется корнем. Узлы, не имеющие потомков (оба потомка которых равны NULL) называются листьями.

            image
            Рис. 1 Бинарное дерево
            Читать дальше →
            • +21
            • 268k
            • 7
          • Глобалы — мечи-кладенцы для хранения данных. Деревья. Часть 2

              Начало — см. часть 1.

              3. Варианты структур при использовании глобалов


              Такая структура как упорядоченное дерево имеет разные частные случаи. Рассмотрим те, которые имеют практическую ценность при работе с глобалами.

              3.1 Частный случай 1. Один узел без ветвей


              Читать дальше →
            • Мир розеток: как зарядить гаджеты в разных странах мира



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

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

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

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

                • Translation


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



                  Табличный процессор (речь идет о MS Excel или LibreOffice Calc) — это довольно занятный и универсальный инструмент. Мне часто приходилось (и приходится) пользоваться его широкими возможностями: автоматизированные отчеты, проверка гипотез, прототипирование алгоритмов. Например, я использовал его для решения задач проекта Эйлер, быстрой проверки алгоритмов, реализовал парсер одного прикладного протокола (по работе надо было). Мне нравится наглядность, которую можно добиться в табличном процессоре, а еще мне нравится нестандартное применение всего, чего только возможно. На Хабре уже появлялись интересные статьи на тему нестандартного применения Excel:
                  «Assembler в 30 строк на Excel»
                  Чем заняться айтишнику в армии или как я на VBA игры писал
                  «RPG-игра в рабочей книге Excel»

                  В этой длинной статье я хочу поделиться своими экспериментами в реактивном программировании с помощью формул табличного процессора. В результате этих экспериментов у меня получился «компьютер» с процессором, памятью, стеком и дисплеем, реализованный внутри LibreOffice Calc при помощи одних только формул (за исключением тактового генератора), который можно программировать на неком подобии ассемблера. Затем, в качестве примера и proof-of-concept, я написал игру «Змейка» и бегущуюползущую строку для этого компьютера.
                  Читать дальше →
                • Превращаем GIMP в удобный редактор

                  Доброго времени суток!

                  В этом посте я хочу рассказать о том, как превратить GIMP в более-менее удобный графический редактор.
                  До недавних пор я сам, мягко говоря, очень его не любил, как и наверное 90% многие из тех, кто с ним вообще сталкивался после Photoshop.

                  Вот скриншот того, что у меня получилось в итоге:


                  Читать дальше →
                • Получаем банковскую карту, находясь за границей



                    Есть несколько вопросов, которые встают перед фрилансерами, использующими кредитки или карты-рассрочки перед выездом за границу. Один из важнейших — это средство хранения денег и платежей. Карты русских банков по ряду причин становятся неудобны при длительном пребывании за границей — например, в случае утери, блокировки и необходимости восстановления. Или, например, при необходимости завести новый счёт в другой валюте — не полетишь же специально в Россию за этим? В последнее время добавились и политические риски. Но в итоге всё сводится к вопросу чисто логистическому: как получить банковскую карту, находясь за пределами родной страны.
                    Читать дальше →
                  • Искусство командной строки



                      Вот уже как неделю английская версия the art of command line висит в секции trending на Github. Для себя я нашел этот материал невероятно полезным и решил помочь сообществу его переводом на русский язык. В переводе наверняка есть несколько недоработок, поэтому милости прошу слать пулл-реквесты мне сюда или автору оригинальной работы Joshua Levy вот сюда. (Если PR отправите мне, то я после того, как пересмотрю изменения отправлю их в мастер-бранч Джоша). Отдельное спасибо jtraub за помощь и исправление опечаток.

                      Enjoy!
                    • Учебник по программированию для начинающих

                        image Представляю вашему вниманию учебник по программированию для начинающих (подходит для школьников). Основная цель — облегчить вход в мир программирования всем желающим.

                        Главные отличия от существующих учебников:
                        — реальный язык программирования JavaScript (а не специализированный язык для обучения)
                        — не требуется устанавливать среду разработки (разве что редактор кода)
                        Читать дальше →
                      • Алгоритм Дейкстры. Поиск оптимальных маршрутов на графе

                        Из многих алгоритмов поиска кратчайших маршрутов на графе, на Хабре я нашел только описание алгоритма Флойда-Уоршалла. Этот алгоритм находит кратчайшие пути между всеми вершинами графа и их длину. В этой статье я опишу принцип работы алгоритма Дейкстры, который находит оптимальные маршруты и их длину между одной конкретной вершиной (источником) и всеми остальными вершинами графа. Недостаток данного алгоритма в том, что он будет некорректно работать если граф имеет дуги отрицательного веса.

                        Для примера возьмем такой ориентированный граф G:

                        image

                        Читать дальше →
                      • От обхода в ширину к алгоритму Дейкстры

                        Вместо введения


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

                        В комментариях попросили рассказать подробнее о структуре данных, скрывающейся за priority_queue в STL C++. В конце статьи приводится краткий рассказ и ее реализация.
                        Читать дальше →
                      • Здоровье гика: как не закиснуть к старости

                          Привет, Geektimes! Сегодня мы поговорим — внезапно! — о здоровье. А если быть точным — о том, как влияет многочасовое ежедневное сидение за компьютером и как можно минимизировать этот вред, чтобы в старости радоваться жизни и продолжать работать сидя за компом, а не жаловаться на жизнь на приёмах у врачей.


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

                          Условно все «компьютерные» упражнения можно поделить на три блока — для глаз, для суставов кистей и для осанки. Итак, поехали.
                          Читать дальше →
                        • Простое суффиксное дерево

                          • Tutorial
                          ДеревоСуффиксное дерево – мощная структура, позволяющая неожиданно эффективно решать мириады сложных поисковых задач на неструктурированных массивах данных. К сожалению, известные алгоритмы построения суффиксного дерева (главным образом алгоритм, предложенный Эско Укконеном (Esko Ukkonen)) достаточно сложны для понимания и трудоёмки в реализации. Лишь относительно недавно, в 2011 году, стараниями Дэни Бреслауэра (Dany Breslauer) и Джузеппе Италиано (Giuseppe Italiano) был придуман сравнительно несложный метод построения, который фактически является упрощённым вариантом алгоритма Питера Вейнера (Peter Weiner) – человека, придумавшего суффиксные деревья в 1973 году. Если вы не знаете, что такое суффиксное дерево или всегда его боялись, то это ваш шанс изучить его и заодно овладеть относительно простым способом построения.
                          Читать дальше →
                        • Учебник по языку SQL (DDL, DML) на примере диалекта MS SQL Server. Часть пятая

                          • Tutorial

                          Предыдущие части




                          В данной части мы рассмотрим


                          Здесь мы в общих чертах рассмотрим работу с операторами модификации данных:
                          • INSERT – вставка новых данных
                          • UPDATE – обновление данных
                          • DELETE – удаление данных
                          • SELECT … INTO … – сохранить результат запроса в новой таблице
                          • MERGE – слияние данных
                          • Использование конструкции OUTPUT
                          • TRUNCATE TABLE – DDL-операция для быстрой очистки таблицы

                          В самом конце вас ждут «Приложение 1 – бонус по оператору SELECT» и «Приложение 2 – OVER и аналитические функции», в которых будут показаны некоторые расширенные конструкции:
                          • PIVOT
                          • UNPIVOT
                          • GROUP BY ROLLUP
                          • GROUP BY GROUPING SETS
                          • использование приложения OVER


                          Операции модификации данных очень сильно связаны с конструкциями оператора SELECT, т.к. по сути выборка модифицируемых данных идет при помощи них. Поэтому для понимания данного материала, важное место имеет уверенное владение конструкциями оператора SELECT.
                          Читать дальше →
                        • О бедной рекурсии замолвите слово, или всё, что вы не знали и не хотите о ней знать

                          • Tutorial
                          Рекурсия: см. рекурсия.

                          Все программисты делятся на 112 категорий: кто не понимает рекурсию, кто уже понял, и кто научился ею пользоваться. В общем, гурилка из меня исключительно картонный, так что постигать Дао Рекурсии тебе, читатель, всё равно придётся самостоятельно, я лишь постараюсь выдать несколько волшебных пенделей в нужном направлении.

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

                          — Как она сложена?
                          — Превосходно! Только рука немного торчит из чемодана.

                          Именно пытаясь разместить стройную теорию алгоритма в жесткий рюкзак реальных ресурсов и приходится постоянно кроить по живому, перепаковывать, и вместо красивых и стройных определений Фибоначчи:

                            def fib(n):
                              if n<0: raise Exception("fib(n) defined for n>=0")
                              if n>1: return fib(n-1) + fib(n-2)
                              return n
                          

                          приходится городить всевозможные грязные хаки, начиная от:

                            @memoized
                            def fib(n):
                              if n<0: raise Exception("fib(n) defined for n>=0")
                              if n>1: return fib(n-1) + fib(n-2)
                              return n
                          

                          И заканчивая вообще:

                            def fib(n):
                              if n<0: raise Exception("fib(n) defined for n>=0")
                              n0 = 0
                              n1 = 1
                              for k in range(n):
                                n0, n1 = n1, n0+n1
                              return n0
                          

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