Pull to refresh
0
0

User

Send message

LLVM для исследователей

Reading time14 min
Views50K
В этой статье рассказывается о проведении исследований на базе инфраструктуры компилятора LLVM. Нашего рассказа должно хватить для того, чтобы исследователи, которым компиляторы прежде были по большей части безразличны, пришли в восторг от LLVM и сделали с его помощью что-нибудь интересное.

Что такое LLVM?


LLVM — это по-настоящему удобный для разборки и сборки «ранний» компилятор для таких традиционных языков программирования, как C и C++.

LLVM настолько хорош, что считается «больше, чем просто компилятором» (это динамический компилятор, он работает с языками, не относящимися к семейству C, он представляет собой новый формат доставки для App Store и т. д. и т. п.). Все перечисленное верно, но для нашей статьи важно лишь приведенное выше определение.

LLVM имеет несколько ключевых отличий от других компиляторов:

  • Главное новшество — промежуточное представление (ПП). LLVM работает с ПП, которое действительно можно прочитать (если вы умеете читать ассемблерный код). Возможно, кому-то это не покажется столь уж большим откровением, однако это свойство очень важно. ПП других компиляторов обычно имеют настолько сложную структуру, что их невозможно записать вручную, трудно понять и использовать.
Читать дальше →
Total votes 72: ↑68 and ↓4+64
Comments6

Алан Кей: как бы я преподавал Computer Science 101

Reading time6 min
Views16K
«Одна из причин, чтобы на самом деле поступить в университет — это выйти за рамки простой профессиональной подготовки и вместо этого уцепиться за более глубокие идеи.»


image

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

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

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

Я работаю на полставки на кафедре вычислительной техники Калифорнийского университета несколько лет (по сути я профессор, но мне не нужно ходить на заседания кафедры). Периодически я веду занятия, иногда у первокурсников. За эти годы и без того низкий уровень любопытства к Computer Science значительно снизился (но также возрос уровень популярности, поскольку вычислительная техника рассматривается как путь к хорошо оплачиваемой работе, если вы умеете программировать и получили сертификат в лучшей 10-ке школ). Соответственно, ни один студент ещё не жаловался на то, что первым языком в Калифорнийском университете является С++!
Читать дальше →
Total votes 18: ↑14 and ↓4+10
Comments9

Python Meetup октябрь: Deliberate Practice и десктоп-приложения на Penta.by

Reading time1 min
Views5.3K
Всем привет!

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

Под катом вы найдете доклады:
  • Deliberate Practice: Coding Dojo, Code Kata and Coderetreat / Сергей Сергиенко
  • Быстрая разработка десктоп-приложений с Penta.by / Андрей Пучко
  • WRK: Modern HTTP benchmarking tool / Алексей Романов

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

image
Читать дальше →
Total votes 16: ↑14 and ↓2+12
Comments0

Обзор способов и протоколов аутентификации в веб-приложениях

Reading time18 min
Views620K


Я расскажу о применении различных способов аутентификации для веб-приложений, включая аутентификацию по паролю, по сертификатам, по одноразовым паролям, по ключам доступа и по токенам. Коснусь технологии единого входа (Single Sign-On), рассмотрю различные стандарты и протоколы аутентификации.

Перед тем, как перейти к техническим деталям, давайте немного освежим терминологию.

  • Идентификация — это заявление о том, кем вы являетесь. В зависимости от ситуации, это может быть имя, адрес электронной почты, номер учетной записи, итд.
  • Аутентификация — предоставление доказательств, что вы на самом деле есть тот, кем идентифицировались (от слова “authentic” — истинный, подлинный).
  • Авторизация — проверка, что вам разрешен доступ к запрашиваемому ресурсу.


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

Аналогично эти термины применяются в компьютерных системах, где традиционно под идентификацией понимают получение вашей учетной записи (identity) по username или email; под аутентификацией — проверку, что вы знаете пароль от этой учетной записи, а под авторизацией — проверку вашей роли в системе и решение о предоставлении доступа к запрошенной странице или ресурсу.

Однако в современных системах существуют и более сложные схемы аутентификации и авторизации, о которых я расскажу далее. Но начнем с простого и понятного.
Читать дальше →
Total votes 48: ↑48 and ↓0+48
Comments20

10 важных уроков, которые я усвоил за время своего проекта A Year of Productivity (год продуктивности)

Reading time8 min
Views29K
image

Сегодня мы поделимся с вами 10 самыми важными уроками, которые Chris Bailey усвоил за время проекта — «a Year of Productivity». Прошлая наша статья вызвала неоднозначную реакцию у аудитории, если вы ее не читали, то рекомендуем посмотреть ее и остальные статьи от Chris Bailey в нашем блоге.

Давайте начнем!

Читать дальше →
Total votes 29: ↑20 and ↓9+11
Comments4

Теоретический минимум *nix-based-систем для WebDev-падавана

Reading time12 min
Views109K


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


Добрый день, уважаемый галактический сенат! На связи снова Денис Мельский, и сегодня на повестке дня — определение теоретического минимума познания *nix систем для юного падавана web-мастерства.

Хотелось бы начать с того, что все мы прекрасно знаем: на 67.4 % наши любимые интернеты крутятся на *nix-based-серверах, а в жизни среднестатистического web-разработчика в вакууме — так и на все 90 %.



Для любителей пруфов — welcome.

Т. ч. в нашем ремесле без знания *nix-систем никак. Давайте проведем экскурс в мир *nix и поймем, какими знаниями должен обладать юный падаван.

Предлагаю рассмотреть три юниорских степени познания дзена управлением шайтан-машиной ака *nix-сервак на примере всеми любимой ubuntu.
Читать дальше →
Total votes 92: ↑59 and ↓33+26
Comments37

Две красивые задачи по алгоритмам

Reading time4 min
Views68K
На этой неделе я начал читать бакалаврам Академического университета базовый курс по алгоритмам. Начинал я совсем с основ, и чтобы тем, кто с базовыми алгоритмами уже знаком, было чем заняться, я в начале пары сформулировал две, наверное, самые свои любимые задачки по алгоритмам. Давайте и с вами ими поделюсь. Решение одной из них даже под катом подробно расскажу. Но не отказывайте себе в удовольствии и не заглядывайте сразу под кат, а попытайтесь решить задачи самостоятельно. Обещаю, что у обеих задач есть достаточно простые решения, не подразумевающие никаких специальных знаний по алгоритмам. Это, конечно, не означает, что эти решения просто найти, но после пары один из студентов подошёл и рассказал правильное решение первой задачи. =) Если же вам интересно посмотреть на начало курса или порешать больше разных задач — приходите к нам на (бесплатный) онлайн-курс, который начнётся 15 сентября.

Задача 1. Дан массив A длины (n+1), содержащий натуральные числа от 1 до n. Найти любой повторяющийся элемент за время O(n), не изменяя массив и не используя дополнительной памяти.


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

Задача 2. Дана матрица nxn, содержащая попарно различные натуральные числа. Требуется найти в ней локальный минимум за время O(n).


Локальным минимумом матрицы называется элемент, который меньше всех своих четырёх соседей (или трёх, если этот элемент лежит на границе; или двух, если это угловой элемент). Обратите внимание, что от нас требуется линейное по n время, хотя в матрице квадратичное по n число элементов. Поэтому мы предполагаем, что матрица уже считана в память. И нам нужно найти в ней локальный минимум, обратившись лишь к линейному количеству её ячеек.

Под катом — решение первой задачи. Ещё раз призываю вас заглядывать под кат только после того, как порешаете задачу. По второй задаче могу какую-нибудь подсказку сказать.
Читать дальше →
Total votes 54: ↑52 and ↓2+50
Comments82

Списки с пропусками: вероятностная альтернатива сбалансированным деревьям

Reading time13 min
Views33K
image

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

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

Балансировать структуру данных вероятностно проще, чем явно обеспечивать баланс. Для многих задач списки пропуска это более естественное представление данных по сравнению с деревьями. Алгоритмы получаются более простыми для реализации и, на практике, более быстрыми по сравнению со сбалансированными деревьями. Кроме того, списки с пропусками очень эффективно используют память. Они могут быть реализованы так, чтобы на один элемент приходился в среднем примерно 1.33 указатель (или даже меньше) и не требуют хранения для каждого элемента дополнительной информации о балансе или приоритете.
Читать дальше →
Total votes 63: ↑62 and ↓1+61
Comments9

Зачем Win32-приложению манифест?

Reading time6 min
Views60K
Недавно на руборде в разделе Программирование был задан вопрос: «Зачем Win32-приложению манифест? На что он влияет?». Первое, что сразу приходит в голову большинству программистов — это темы оформления. Но на самом деле в современных виндах манифест нужен не только для этого. Я подумал и написал пять ключевых аспектов, на которые влияет манифест или его отсутствие. После этого сразу несколько человек попросили оформить этот пост в виде более развернутой статьи.
Мое исследование темы манифестов под катом
Total votes 91: ↑83 and ↓8+75
Comments20

Простой сервер на Qt/C++

Reading time3 min
Views125K
В последнее время очень часто приходится слушать определенный порт, получать данные от клиента и отправлять соответствующий ответ. Решил поделиться с новичками, как же создать такой сервер и решить некоторые поставленные вопросы.
В этой статье мы рассмотрим:
— Создание tcp сервера.
— Подключение нескольких клиентов к серверу параллельно.
— Отключение клиентов (отключение сокетов).
— Получение и отправку данных.

Исходники: https://github.com/valualit/QTcpServer01

image

Читать дальше →
Total votes 67: ↑45 and ↓22+23
Comments27

Работа с сокетами в Qt

Reading time5 min
Views127K

Введение


image
Как-то несколько лет назад, на одном из форумов, я нашел такую замечательную фразу — «Каждый уважающий себя программист в жизни должен написать свой чат-клиент». Тогда мои знания не позволяли сделать это. Я просто улыбнулся и прошел мимо этой фразы. Но вот совсем недавно я столкнулся именно с данной проблемой — нужно было написать свой чат. Ну а так как последнее время мой интерес был направлен на изучение и разработку Qt-приложений, на чем будет сделан он, решилось само собой.
Читать дальше →
Total votes 30: ↑27 and ↓3+24
Comments8

Опыт передачи файлов большого объема по защищенному протоколу из 1С на сайт

Reading time5 min
Views20K
передача файлов большого объема по защищенному протоколу из 1С на сайт
Во время создания очередной B2B-системы на этапе интеграции 1С: Предприятие 8.2 с web — интерфейсом возникла необходимость безопасной передачи файлов больших размеров из 1С в web.
Для решения этой задачи был выбран протокол SFTP, как надежный и не имеющий ограничений по размеру передаваемого файла.
Во встроенном языке 1С: Предприятие 8.2 отсутствуют функции для передачи данных через SFTP, поэтому пришлось искать прикладные средства.
Читать дальше →
Total votes 13: ↑9 and ↓4+5
Comments13

Внешние компоненты в 1С 8.2

Reading time16 min
Views150K

Введение


Эта статья дает представление о работе внешних компонент в системе «1С: Предприятие».
Будет показан процесс разработки внешней компоненты для системы «1С: Предприятие» версии 8.2, работающей под управлением ОС семейства Windows с файловым вариантом работы. Такой вариант работы используется в большинстве решений, предназначенных для предприятий малого бизнеса. ВК будет реализована на языке программирования C++.
Читать дальше →
Total votes 27: ↑19 and ↓8+11
Comments4

Дэн Саффер — Микровзаимодействия (Microinteractions). Конспект книги

Reading time21 min
Views39K
Microinteractions book cover«Детали — это не детали. Они создают дизайн.» — Чарльз Имз.

Успех цифровых продуктов определяется мелочами. Книга «Микровзаимодействия» Дэна Саффера научит вас проектировать эффективные функциональные элементы. А этот подробный конспект поможет лучше запомнить прочитанное или даже заменит англоязычный оригинал.

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

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

Читать дальше →
Total votes 49: ↑49 and ↓0+49
Comments2

Как я заказывал и собирал PRUSA i3

Reading time6 min
Views162K
После того, как мне пришел распечатанный корпус для моих часов (еще раз спасибо bigbee), я загорелся идеей купить 3D принтер. Идея RepRap opensource принтеров мне понравилась, да и цена на них не так уж и кусалась. После многочисленных страниц форумов и кучи предложений на интернет площадках, я решил купить Prusa i3 (Прюша итерация 3). За подробностями прошу под кат.
Читать дальше →
Total votes 33: ↑31 and ↓2+29
Comments41

Сервис Thingiverse — Вселенная для 3d печати

Reading time4 min
Views87K


Когда речь заходит о 3д принтерах и 3д печати, то как правило возникают следующие вопросы:

  1. Где бесплатно скачать 3д модель для печати?
  2. Зачем вообще применяют 3д печать, что можно с помощью нее полезное, интересное сделать?
  3. С помощью каких программ, желательно бесплатных, можно создать 3д модель?

На эти вопросы можно ответить с помощью сервиса каталога 3д моделей — Thingiverse.

В данном посте будет проделан небольшой обзор 3д моделей из Thingiverse (сгруппированные по программам, с помощью которых они были созданы). В качестве примера в заголовке предоставлен конструктор из 3д напечатанных деталей, созданный с помощью 123D Design. Подробнее про этот конструктор, и другие примеры 3д моделей от Sketchup, OpenSCAD, Blender3d, FreeCAD — под катом.
Читать дальше →
Total votes 42: ↑37 and ↓5+32
Comments17

Рабочее место Попкорн: Как стать Супер-продуктивным работая на себя

Reading time6 min
Views90K

Коллеги, представляю вам перевод статьи про Супер-продуктивность, которая меня сильно зацепила. Надеюсь, что перевод будет вам полезен для организации своего рабочего времени.

Я познакомился с этой идеей где-то на Hacker News несколько недель назад и адаптировал концепцию для моего собственного образа жизни, и это изменило мой подход к работе.

Супер-продуктивность — как начать работать больше, чем когда-либо
Читать дальше →
Total votes 113: ↑94 and ↓19+75
Comments69

Избавление от привычек. Миф или вымысел?

Reading time4 min
Views92K
Вы хотите быть эффективным на работе и в жизни, но есть пара дурных привычек, от которых вы не можете избавиться? Расслабьтесь, избавиться от привычки невозможно.

Не хватает силы воли начать новую жизнь, и вы каждый раз терпите неудачу? Успокойтесь, вы проиграли, изменить жизнь усилием воли нельзя.

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

Сегодняшний пост написан под влиянием полезной книги Чарльза Дахигга "Сила привычки".
Читать дальше →
Total votes 95: ↑87 and ↓8+79
Comments153

Книга «How Google Tests Software» теперь на русском!

Reading time2 min
Views54K
Полтора года назад, когда вышла книга «How Google Tests Software», я загорелась перевести ее на русский язык. Я давно восхищаюсь Уиттакером, я переводила его статьи, слушала мастер-классы и считаю его самым крутым чуваком в тестировании. Тогда я еще работала руководителем отдела тестирования в «Иннове», и компания поддержала мой проект.

С тех пор многое поменялось: я перестала заниматься тестированием, выпускала приложения для iOS, сейчас работаю продакт-менеджером большого веб-проекта. Уиттакер же еще в 2012 году ушел из Google в Microsoft, громко хлопнув дверью.

Несмотря на все это, весь прошлый год я работала над книгой: договаривалась с издательством, пыталась организовать группу добровольцев для перевода текста (не получилось), искала переводчика, помогала переводить и редактировала текст, работала с дизайнерами над макетом и обложкой, утверждала корректуру и сверстанные макеты. Проект занял намного больше сил и времени, чем я рассчитывала, но результатом я осталась довольна.

И вот, в январе издательство «Питер» выпустило книгу на русском языке с нашим переводом и дизайном:

Читать дальше →
Total votes 130: ↑123 and ↓7+116
Comments59
1

Information

Rating
Does not participate
Registered
Activity