Как стать автором
Обновить
11
0
Young Jedi @zjeday

Программист

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

JSX — подробности

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

React. Продвинутые руководства. Часть Первая


Этой публикацией я открываю серию переводов раздела "Продвинутые руководства" (Advanced Guides) официальной документации библиотеки React.js.


JSX — подробности


Фундаментально, JSX является синтаксическим сахаром для функции React.createElement(component, props, ...children).


Читать дальше →
Всего голосов 27: ↑26 и ↓1+25
Комментарии11

Шпаргалка по шаблонам проектирования

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

Перевод pdf файла с сайта http://www.mcdonaldland.info/ с описанием 23-х шаблонов проектирования GOF. Каждый пункт содержит [очень] короткое описание паттерна и UML-диаграмму. Сама шпаргалка доступна в pdf, в виде двух png файлов (как в оригинале), и в виде 23-х отдельных частей изображений. Для самых нетерпеливых — все файлы в конце статьи.

Под катом — много картинок.

Читать дальше →
Всего голосов 192: ↑179 и ↓13+166
Комментарии66

Компиляция. 1: лексер

Время на прочтение7 мин
Количество просмотров91K
Меня всегда завораживало таинство рождения программой программы. К сожалению, российские вузы уделяют мало внимания сей интереснейшей теме. Рассчитываю написать серию постов, в которых поэтапно создадим маленький работоспособный компилятор.

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

Далее в посте:

  1. С какой стати писать компиляторы?
  2. Общий план
  3. Анализ текста
  4. Практический пример
  5. Как это работает?
Читать дальше →
Всего голосов 93: ↑89 и ↓4+85
Комментарии45

String.Intern делает строки ещё интереснее

Время на прочтение10 мин
Количество просмотров67K
Предисловие от переводчика:

Проходя/проводя собеседования, приходится сталкиваться с вопросами, которые раскрывают общее понимание работы .NET. По моему мнению, наибольшей любовью среди таких вопросов пользуются вопросы о работе “сборщика мусора”, но однажды мне был задан вопрос о интернировании строк. И он, честно говоря, поставил меня в тупик. Поиск в рунете выдал несколько статей, но они не давали ответы на те вопросы, которые я искал. Надеюсь мой перевод статьи Эндрю Стеллмана (автора книги “Head First C#”) заполнит этот пробел. Думаю, этот материал будет полезен для начинающих .NET разработчиков и тем кому стало интересно, что же такое интернирование строк в .NET.

String.Intern делает строки ещё интереснее


Одна из первых вещей, с которой сталкивается каждый начинающий C# разработчик — это работа со строками. Я показываю основу работы со строками в начале «Head First C#», как поступают практически в любой другой книге по C#. Так что не следует удивляться, что C# разработчики уровня джуниор и мидл уровня чувствуют, что они получили довольно хорошую базу по строкам. Но строки интереснее, чем кажутся. Одним из самых интересных аспектов строк в C# и .NET является метод String.Intern. Понимание работы этого метода может улучшить ваши навыки в C# разработке. В этом посте, я сделаю краткий туториал для метода String.Intern, чтобы показать вам как он работает.

Примечание: В конце этого поста я собираюсь показать кое-что «под капотом», используя ILDasm. Если вы никогда не работали с ILDasm раньше, это будет хорошей возможностью что-бы познакомиться с очень полезным инструментом .NET.
Читать дальше →
Всего голосов 28: ↑22 и ↓6+16
Комментарии16

Интересные заметки по C# и CLR

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


Изучая язык программирования C#, я сталкивался с особенностями как самого языка, так и его средой исполнения, *некоторые из которых, с позволения сказать, «широко известны в узких кругах». Собирая таковые день за днем в своей копилке, что бы когда-нибудь повторить, чего честно сказать еще ни разу не делал до этого момента, пришла идея поделиться ими.

Эти заметки не сделают ваш код красивее, быстрее и надежнее, для этого есть Стив Макконнелл. Но они определенно внесут свой вклад в ваш образ мышления и понимание происходящего.
Читать дальше →
Всего голосов 41: ↑30 и ↓11+19
Комментарии62

Selenium для Python. Глава 1. Установка

Время на прочтение5 мин
Количество просмотров472K
Представляю перевод неофициальной документации Selenium для Python.
Перевод сделан с разрешения автора Baiju Muthukadan.
Оригинал можно найти здесь.

Предисловие от автора статьи


Selenium WebDriver – это программная библиотека для управления браузерами. WebDriver представляет собой драйверы для различных браузеров и клиентские библиотеки на разных языках программирования, предназначенные для управления этими драйверами.
Читать дальше →
Всего голосов 18: ↑17 и ↓1+16
Комментарии12

Структуры и конструкторы по умолчанию

Время на прочтение7 мин
Количество просмотров86K
Конструктор по умолчанию — это довольно простая конструкция, которая сводится к созданию для типа конструктора без параметров. Так, например, если при объявлении нестатического класса не объявить пользовательский конструктор (не важно, с параметрами или без них), то компилятор самостоятельно сгенерирует конструктор без параметров. Однако когда речь заходит о конструкторах по умолчанию для структур (для значимых типов), то тут все становится не столь просто.

Вот простой пример, как вы ответите на следующий вопрос: сколько значимых типов из .NET Framework содержит конструкторы по умолчанию? Интуитивным ответом кажется "все", и будете не правы, поскольку на самом деле, ни один из значимых типов .NET Framework не содержит конструктора по умолчанию.

Читать дальше →
Всего голосов 34: ↑30 и ↓4+26
Комментарии11

Изучите все языки программирования

Время на прочтение9 мин
Количество просмотров85K
Когда я был ещё первокурсником, то познакомился с другим студентом, который утверждал, что может писать код на любом языке программирования, который я смогу назвать. Я был несколько шокирован и ответил подначкой:

— Что, даже на том нечитаемом эзотерическом языке, где есть всего пара команд, которые едва-едва симулируют машину Тьюринга?
— Да, этот язык называется brainfuck. Я знаю brainfuck.

И это был не трюк — мы проверили. Я называл известный мне язык программирования, он тратил пару минут в Интернете на то, чтобы освежить свои знания по нему — и был способен писать на этом языке работающие алгоритмы. Я никак не мог понять этого. Ему, как и мне, было тогда около 18 лет — как он мог в этом возрасте знать все эти языки?

image
Интерпретатор brainfuck, написанный на brainfuck

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

Сегодня я советую своим студентам «постараться изучить все языки программирования». Подумайте сами — ведь эта идея лучше, чем все вот эти «В этом году я выучу Go! Ой, нет, теперь говорят что в моде Rust — выучу лучше Rust! Или Swift ...». Просто выучите все — не ошибётесь. А эта статья, возможно, вам в этом немного поможет.
Читать дальше →
Всего голосов 89: ↑81 и ↓8+73
Комментарии94

PE (Portable Executable): На странных берегах

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


Эта статья представляет из себя рассказ о том как устроены исполняемые файлы (в точку! Это именно те штуки, которые получаются после компиляции приложений с расширением .exe). После того, как написан код, подключены библиотеки, подгружены к проекту ресурсы (иконки для окон, какие-либо текстовые файлы, картинки и прочее) всё это компонуется в один единственный исполняемый файл, преимущественно с расширением .exe. Вот именно в этот омут мы и погрузимся.
*Статья находится под эгидой «для начинающих» поэтому будет изобиловать схемами и описанием важных элементов загрузки.
На палубу
Всего голосов 37: ↑32 и ↓5+27
Комментарии22

Алгоритмы на графах — Часть 0: Базовые понятия

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

Вступление


Как оказалось тема алгоритмов интересна Хабра-сообществу. Поэтому я как и обещал, начну серию обзоров «классических» алгоритмов на графах.
Так как публика на Хабре разная, а тема интересна многим, я должен начать с нулевой части. В этой части я расскажу что такое граф, как он представлен в компьютере и зачем он используется. Заранее прошу прощения у тех кто это все уже прекрасно знает, но для того чтобы объяснять алгоритмы на графах, нужно сначала объяснить что такое граф. Без этого никак.

Читать дальше →
Всего голосов 130: ↑118 и ↓12+106
Комментарии70

Ликбез по типизации в языках программирования

Время на прочтение12 мин
Количество просмотров499K
image

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

В полной версии находится подробное описание всех видов типизации, приправленное примерами кода, ссылками на популярные языки программирования и показательными картинками.
Читать дальше →
Всего голосов 239: ↑232 и ↓7+225
Комментарии180

Статика в C#

Время на прочтение4 мин
Количество просмотров173K
Волею судьбы в последние годы у меня появилось ещё одно очень увлекательное хобби – учить. Я занимаюсь обучением людей, которые хотят стать программистами C#. Люди приходят разные: технари, гуманитарии, кто-то по своей воле, кого-то направляют от организаций. Не смотря на различные уровни, мне нужно их обучать. Поэтому я стараюсь постоянно обновлять и улучшать свои обучающие материалы. В связи с чем, пришёл к выводу: «А не плохо было бы оформить материалы в текстовом виде, чтобы ими было удобно пользоваться». Под катом я выложил как пример одну из недавно оформленных лекций.
Приглашаю весь желающих обсудить материал, может быть кто-то почерпнёт для себя что-то новое.
Всего голосов 34: ↑23 и ↓11+12
Комментарии16

IEnumerable<T> и IQueryable<T>, в чем разница?

Время на прочтение2 мин
Количество просмотров47K
Уважаемые Хабровчане, решил поделиться одним не очевидным моментом использования LinqToSql, с которым столкнулся некоторое время назад. А именно, про особенности использования каскадных Linq запросов:

Работая над очередным ASP.NET MVC проектом, и проектируя уровень доступа к БД мне потребовалось проверить качество скриптов, генерируемых Framework-ом L2C.

Что имеем (упрощенный вариант модели):


class User {
  public long Id { get; set; }
  public string Name { get; set; }
  public IEnumerable<Parameter> Parameters { get; set; }
}

class Parameter {
  public long UserId { get; set; }
  public string Name { get; set; }
  public string Value { get; set; }
}

Для получения данных написан класс UserRepository:

class UserRepository: MyProjectDataContext {
  public IEnumerable GetUsers() {
    return this.Users.ToModelUsers();
  }
}

static class RepositoryHelper {
  public static IEnumerable<Model.User> ToModelUsers(this IEnumerable<DataAccess.User> users) {
    return users.Select(u => new Model.User { Id = u.Id, Name = u.Name, Parameters = u.Parameters.ToModelParameters() });
  }

  public static IEnumerable<Model.Parameter> ToModelParameters(this IEnumerable<DataAccess.Parameter> parameters) {
    return parameters.Select(u => new Model.Parameter {… });
  }
}

пишем
var users = userRepository.GetUsers().ToList();

смотрим профайлер, и с удивлением обнаруживаем что для загрузки 10 пользователей и их параметров было выполнено целых 11 запросов.
подробности
Всего голосов 64: ↑43 и ↓21+22
Комментарии35

Pygest #1. Релизы, статьи, интересные проекты из мира Python [01 января 2017 — 15 января 2017]

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

Всем привет! Серией данных дайджестов на Habrahabr хотелось бы продолжить некогда начатую alrusdi, Dead_Angel, WarmongeR идею опубликования свежих новостей, статей, релизов из мира Python.

Планируется выпускать дайджест 2 раза в месяц. Это будет не очень большие по размеру статьи с интересными (на взгляд автора) материалами из мира Python. Будут очень приветствоваться присланные актуальные материалы, которые будут добавлены в ближайший дайджест, а также люьые замечания и предложения.

А теперь к делу!
Перейти к дайджесту
Всего голосов 29: ↑27 и ↓2+25
Комментарии10

Машинное обучение — это легко

Время на прочтение7 мин
Количество просмотров344K
В данной статье речь пойдёт о машинном обучении в целом и взаимодействии с датасетами. Если вы начинающий, не знаете с чего начать изучение и вам интересно узнать, что такое «датасет», а также зачем вообще нужен Machine Learning и почему в последнее время он набирает все большую популярность, прошу под кат. Мы будем использовать Python 3, так это как достаточно простой инструмент для изучения машинного обучения.
Читать дальше →
Всего голосов 51: ↑44 и ↓7+37
Комментарии20

Бесплатный облачный хостинг для студентов в Microsoft Azure

Время на прочтение4 мин
Количество просмотров42K
Мы уже писали в нашем блоге про бесплатный облачный хостинг Microsoft Azure для студентов. Теперь пришла пора поделиться этой новостью с хабрасообществом!



В рамках облака Microsoft Azure всегда существовала возможность размещать бесплатные Azure Web Sites, однако для получения доступа к облаку была необходима регистрация с кредитной картой, что многих останавливало. Теперь же студенты в рамках программы DreamSpark могут получить доступ к Azure Web Sites и некоторым другим возможностям облака Microsoft Azure без кредитной карты. Это означает, что всем студентам и школьникам доступен бесплатный облачный хостинг, где они могут размещать не только свои приложения на ASP.NET, PHP, Python, Node.js и других технологиях, но и разворачивать сайты на системах управления контентом типа WordPress и Joomla! Подробные инструкции и небольшой видеокурс доступен на сайте studentazure.ru.
Читать дальше →
Всего голосов 18: ↑16 и ↓2+14
Комментарии23

Я сегодня опять заработал на Bitcoin: почему это плохо?

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

Итак, мой виджет заурчал, запищал, заскрипел — и, в общем, подал все намёки на то, что с курсом Bitcoin что-то не то. Вновь.

Рост до 850 и выше. И я — получил профит (примерно 10-16 тыс. руб. с битка — покупал по-разному, но от 37 000 рублей за крипто-монету). И посему — опять разочаровался: да, я не инвестор-миллиардер; да, для меня — это не главный доход жизни. Но именно потому, что в btc заложен немыслимый рост. А главное — спекуляции.

Вспомним, что монеты в “цифровом золоте” ограничены по эмиссии: казалось бы, вот оно — средство от инфляции, кою когда-то выдумали ради того, чтобы не было масштабных срывов экономики по типу Великой Депрессии.
Читать дальше →
Всего голосов 50: ↑30 и ↓20+10
Комментарии116

Смотрим часть чужого избранного ВКонтакте

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

Кадры из фильма «50 оттенков серого»

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

По данным wordstat.yandex.ru, до 2000 раз в месяц у поискового робота спрашивают «как посмотреть кто что лайкает». Ответом в поисковой выдаче является вирусная программка LikeCheсker, которая на поставленный вопрос на самом деле не отвечает. А мы ответим.

Зачем это нужно? Если верить интернету (а ему лучше не верить) по, например, почерку человека можно определить его характер. Например
Саркастичных людей можно распознать по написанию буквы «ё». Чем необычнее изображение точек, помещенных над этой буквой, тем острее его чувство юмора и ярче его способность к подражанию.

Есть у меня предположение, что по картинкам и постам, которые человек «лайкает» можно построить более точный портрет личности, чем по его почерку. Однако для получения этой информации нужно немного потрудиться.
Далее
Всего голосов 64: ↑41 и ↓23+18
Комментарии74

ASP.NET Core: Ваше первое приложение на Mac c использованием Visual Studio Code

Время на прочтение4 мин
Количество просмотров17K
Представляем вам последнюю статью из цикла по разработке на ASP.NET Core. В данной статье вы узнаете как можно написать свое первое приложение ASP.NET Core на Mac.


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

Ваш язык программирования — отстой

Время на прочтение54 мин
Количество просмотров139K
1 Почему JavaScript отстой
• 1.1 Плохая конструкция
• 1.2 Система типов
• 1.3 Плохие функции
• 1.4 Отсутствующие функции
• 1.5 DOM
2 Почему Lua отстой
3 Почему PHP отстой
• 3.1 Исправлено в поддерживаемых в настоящее время версиях
4 Почему Perl 5 отстой
5 Почему Python отстой
• 5.1 Исправлено в Python 3
6 Почему Ruby отстой
7 Почему Flex/ActionScript отстой
8 Почему скриптовые языки отстой
9 Почему C отстой
10 Почему C++ отстой
11 Почему .NET отстой
12 Почему C# отстой
13 Почему VB.NET отстой
15 Почему Objective-C отстой
16 Почему Java отстой
• 16.1 Синтаксис
• 16.2 Исправлено в Java 7 (2011)
• 16.3 Модель
• 16.4 Библиотека
• 16.5 Обсуждение
17 Почему Backbase отстой
18 Почему XML отстой
19 Почему отстой XSLT/XPath
20 Почему CSS отстой
• 20.1 Исправлено в CSS3
21 Почему Scala отстой
22 Почему Haskell отстой
23 Почему Closure отстой
24 Почему Go отстой
• 24.1 Базовые средства программирования (базовый язык)
• 24.2 Взаимосовместимость
• 24.3 Стандартная библиотека
• 24.4 Набор инструментальных средств
• 24.5 Сообщество
25 Почему Rust отстой
• 25.1 Безопасность
• 25.2 Синтаксис
• 25.3 Конструкция API и система типов
• 25.4 Сообщество
• 25.5 Набор инструментальных средств

Почему JavaScript отстой


Учтите, что некоторые положения относятся не к самому JavaScript, а к программным интерфейсам веб-приложений (https://developer.mozilla.org/en/docs/Web/API).

Плохая конструкция

• Каждый скрипт исполняется в едином глобальном пространстве имён, доступ в которое возможен в браузерах с оконным объектом.
• Camel-регистр никуда не годится:

XMLHttpRequest
HTMLHRElement

Читать дальше →
Всего голосов 314: ↑167 и ↓147+20
Комментарии353

Информация

В рейтинге
Не участвует
Откуда
Львов, Львовская обл., Украина
Зарегистрирован
Активность