Как стать автором
Обновить
3
0
Anders Bendsen @Bendsen

Пользователь

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

25 ошибок начинающего программиста

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

Научитесь выявлять их. Выработайте привычки избегать их.


Цель этой статьи не загнобить новичков за типичные ошибки, а научить выявлять их и избегать. Порядок перечисления – случайный.

От переводчика


Иногда бывает трудно объяснить простыми словами казалось бы банальные вещи: зачем использовать гит, в чем фишка инкапсуляции, зачем писать тесты, как планировать свой код, рефакторить чужой и т.д. Мне показалось, что в этой статье компактно собраны важные «гуманитарные» аспекты программирования. Что-то вроде морального кодекса, ориентира и мотиватора в принятии решений, связанных с написанием кода.

Как бы это смешно не звучало, я работал над этим текстом с середины марта, стараясь подобрать подходящие формулировки и упростить для восприятия. Ещё пару дней воевал с хабра-редактором. Поэтому, если вы найдёте недочёты, прошу не винить меня в нерадении, а оповестить, я их сразу же исправлю. Я думал украсить статью картинками, но решил, что это только раздует её до совсем неприличных размеров. Приятного чтения.
Читать дальше →
Всего голосов 78: ↑69 и ↓9+60
Комментарии231

Бета-тестирование AB-DOC

Время на прочтение3 мин
Количество просмотров2.5K
Привет всем! Мы завершили работу над первой версией AB-DOC и приглашаем всех на бета-тест. Приложение позволяет создать документы онлайн в удобном редакторе и систематизировать их хранение в виде дерева.


Подробности под катом.
Читать дальше →
Всего голосов 9: ↑9 и ↓0+9
Комментарии7

8 учебных проектов

Время на прочтение3 мин
Количество просмотров147K
«Мастер совершает больше ошибок, чем новичок — попыток»

Предлагаем 8 вариантов проектов, которые можно сделать «по фану», дабы получить реальный опыт разработки.

Проект 1. Клон Trello


image


Клон Trello от Indrek Lasn .

Что вы освоите:

  • Организация маршрутов обработки запросов (Routing).
  • Drag and drop.
  • Как создавать новые объекты (доски, списки, карточки).
  • Обработка и проверка входных данных.
  • Со стороны клиента: как использовать локальное хранилище, как сохранять данные в локальном хранилище, как читать данные из локального хранилища.
  • Со стороны сервера: как использовать базы данных, как сохранять данных в базе, как читать данные из базы.

Тут пример репозитория, сделанного на React+Redux.
Читать дальше →
Всего голосов 36: ↑30 и ↓6+24
Комментарии18

Разработка личной системы управления

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

Мотивация


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

Если интересно, что с этим может поделать отдельный человек — добро пожаловать под кат.
Читать дальше →
Всего голосов 18: ↑15 и ↓3+12
Комментарии18

Перехват функций .NET/CLR

Время на прочтение16 мин
Количество просмотров20K
Иногда при разработке программного обеспечения требуется встроить дополнительную функциональность в уже существующие приложения без модификации исходного текста приложений. Более того, зачастую сами приложения существуют только в скомпилированном бинарном виде без наличия исходного текста. Широко известным способом решения указанной задачи является т.н. “сплайсинг” – метод перехвата функций путем изменения кода целевой функции. Обычно при сплайсинге первые байты целевой функции перемещаются по другим адресам, а на их исходное место записывается команда безусловного перехода (jmp) на замещающую функцию. Поскольку сплайсинг требует низкоуровневых операций с памятью, то он осуществляется с использованием языка ассемблера и С/C++, что также накладывает определенные ограничения на реализацию замещающих функций – они обычно также реализованы на С/C++ (реже на ассемблере).

Метод сплайсинга для перехвата API-функций в Windows широко описан в Интернете и в различных литературных источниках. Простота указанного перехвата определяется следующими факторами:
  1. целевая функция является статической – она сразу присутствует в памяти загруженного модуля;
  2. адрес целевой функции легко определить (через таблицу экспорта модуля или функцию GetProcAddress).

Реализация замещающих функций на C/C++ при перехвате API-функций является оптимальным вариантом, поскольку Windows API реализовано, как известно, на языке C, и замещающие функции могут оперировать теми же понятиями, что и заменяемые.
Читать дальше →
Всего голосов 48: ↑48 и ↓0+48
Комментарии26

Парсинг формул с функциями

Время на прочтение10 мин
Количество просмотров20K
Доброго времени суток!

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

В интернете много решений, но все не то, или не так. Или без формул, или без переменных или простейшие возможности типа «1+(2-3)/4». Зато большинство ответов были в сторону лексического анализа и обратной польской нотации. Вот их я и применил, взяв примеры с разных источников.

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

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

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

Вот что получилось. Ниже будет ссылка на исходники.
Читать дальше →
Всего голосов 14: ↑9 и ↓5+4
Комментарии12

Флешка OneDrive — portable версия для OneDrive

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

Флешка OneDrive — и это не метафора, в статье пойдет речь о том, как создать флешку, синхронизированную с OneDrive, используя portable версию syncDriver для OneDrive. «Вес» портативного OneDrive составляет немного более чем 3 MB, причем вся конфигурация и база данных синхронизации хранятся там же, на флэш-накопителе. Всё работает на разных версиях Windows от XP до Windows 8.1, и даже Windows 10. При этом не важно, как Windows назовет вам устройство, когда вы будете использовать флешку на другом компьютере.
Интересно, значит, приступим...
Всего голосов 17: ↑14 и ↓3+11
Комментарии13

Простой клиент OneDrive — всё не так просто

Время на прочтение4 мин
Количество просмотров74K
Всем давно уже известен сервис OneDrive от Microsoft, который представляет собой облачное хранилище данных с неплохим Web UI.

Для аналогичных сервисов, в частности, Dropbox, выпущено огромное количество дополнений и расширений, например, MacDropAny и многие другие. Для OneDrive не так много расширений, поэтому он стал площадкой для нас — и мы выпустили альтернативный клиент для OneDrive — syncDriver.



У него есть вся функциональность стандартного клиента от Microsoft, а кроме того ряд особенностей, ради которых его имеет смысл использовать. Установить его можно здесь. Сразу после установки он предложит вам осуществить подключение к сервису OneDrive.
Читать дальше →
Всего голосов 23: ↑18 и ↓5+13
Комментарии47

Информация

В рейтинге
Не участвует
Откуда
Arhus, Дания
Дата рождения
Зарегистрирован
Активность