Реклама
12 ноября 2016 г. 10:27

Программирование - Индивидуальное предпринимательство и налоговые каникулы - 2016 год

РуководствоКарьера и бизнес в ITИП, Налоговые каникулы3233

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

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

15 октября 2016 г. 19:50

Django - Урок 013. Контактная форма на Django

РуководствоDjangoконтакты, контактная форма, Django2879

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

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

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

4 октября 2016 г. 22:09

Django - Урок 012. Внедрение поиска по сайту с пагинацией результатов

РуководствоDjangoПоиск, Postgres, Search2869

Для организации поиска на сайте, который основан на Django , и использует базу данных PostgreSQL можно использовать модуль для поиска по этой базе данных, поставляемый с Django. Тем более, что данный поиск обеспечивает полнотекстовый поиск в достаточной мере для небольшого ресурса.

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

В итоге имеем следующий план действий:

  1. Добавляем приложение для организации поиска;
  2. Добавляем url поиска;
  3. Добавляем форму поиска;
  4. Описываем шаблон страницы поиска.
  5. Описываем представление для обработки выдачи поиска;
30 сентября 2016 г. 22:42

Django - Урок 011. Добавление комментариев на сайт с Django

РуководствоDjangoDjango, Python, MaterializedPath4878

Взявшись за реализацию комментариев на сайте под Django, я с удивлением обнаружил, что Django не предоставляет никаких модулей для реализации комментариев. Вернее он предоставлял его раньше, это был модуль django.contrib.comments , но в версии 1.7 его объявили как deprecated и предложили либо пилить самостоятельно, либо воспользоваться чем-нибудь вроде Disqus. Хорошо, он вроде тоже поддерживает подсветку синтаксиса кода, но... в статьях одна подсветка, в комментариях другая - это будет некрасиво.

Поэтому будем внедрять собственный велосипед и ловить свои баги.

Для реализации комментариев необходимо:

  • Добавить новую модель, назовём её Comment;
  • Добавить представление, которое будет обрабатывать добавление комментария;
  • Добавить форму для ввода комментария;
  • Воспользоваться для организации древовидной структуры подходом Materialized Path ;
27 сентября 2016 г. 0:06

Django - Урок 010. Получение переменных в шаблоне из файла settings.py в Django

РуководствоDjangoSITE_URL, simple_tag, settings2041

В файле settings.py в Django мы храним всю необходимую конфигурационную информацию нашего приложения, в состав которой может входить URL сайта или пути к определённым директориям, в которых хранятся специальный файлы и многая другая информация.

И иногда требуется данные переменные использовать в шаблонах, тот же самый URL сайта. Но просто прописав в шаблоне эту константу через {{ SITE_URL }} , воспользоваться данной переменной не получится. Одним из способов решения данной задачи является регистрация шаблонных тегов, которые будут выполнять определённый функционал, например забирать атрибут из файла настроек по его имени.

25 сентября 2016 г. 23:37

Materialized Path в PostgreSQL

РуководствоPostgreSQLPostgreSQL, MaterializedPath2372

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

Распространёнными подходами для организации древовидных структур являются:

Adjacency List
Список смежных вершин

Организация структуры данных заключается в том, что каждый объект хранит информацию о родительском объекте, то есть в строке таблицы имеется дополнительное поле, в котором указывается ID объекта, в который вложен данный объект.
Nested Set
Вложенное множество
Вложенные множества хранят информацию не Только о так называемых левом и правом ключе, а также уровне вложенности. Данный вариант организации структуры данных удобен для чтения, но более тяжело поддаётся модификации.
Materialized Path
Материализованный путь
Идея этой структуры данных заключается в том, что каждая запись хранит полный путь к корневому элементу дерева.

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

24 сентября 2016 г. 19:59

Django - Урок 009. Иконки социальных сетей "Поделиться" без JavaScript

РуководствоDjangoShare, Social1555

Иконки социальных сетей, с помощью которых можно поделиться статьей с сайта, уже прочно вошли в обиход большинства сайтов. Раскрутка сайта за счёт сарафанного радио вообще довольно эффективный вариант роста многих ресурсов, особенно, если тематика может затрагивать очень крупные социальные группы. Но сейчас в общем-то вопрос не об этом. А о том, как прикрутить подобные кнопки без использования сторонних сервисов, наподобие кнопок от Яндекса или довольно известного сервиса UpToLike , который также позволяет отслеживать статистику.

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

24 сентября 2016 г. 17:55

Django - Урок 008. Добавление файлов Sitemap на сайт с Django

РуководствоDjangoSitemap, Python, Sitemap1720

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

С точки зрения текущего состояния сайта EVILEG COM будет сформировано три файла Sitemap, которые будут вложены в один главный:

  • Основной Sitemap с постоянными страницами и главной страницей сайта;
  • Sitemap разделов;
  • Sitemap статей.
21 сентября 2016 г. 22:12

Django - Урок 007. Добавление Pagination на основе django-bootstrap3

РуководствоDjangoPagination, Python, django-bootstrap31757

Количество статей на новом сайте начало приближаться к 10 штукам, поэтому в срочном порядке добавляю Pagination, чтобы была возможность пролистывать страницы на сайте. Но поскольку уже используется модуль django-bootstrap3 , то и Pagination будет использоваться из этого модуля. Зачем же делать лишнюю работу, когда уже всё сделано? Не так ли.

Для добавления Pagination необходимо:

  1. Использовать класс Paginator из django.core.pagination;
  2. Добавить в шаблон главной страницы bootstrap_pagination с привязкой ;
  3. Добавить проверку текущего номера страницы;
  4. И ... не добавлять ничего нового в шаблоны url.
21 сентября 2016 г. 10:13

Django - Урок 006. Кастомизация страниц ошибок 403, 404, 500

РуководствоDjango403, 404, 500, Python2086

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

Как объявлено в заголовке статьи, кастомизированы был следующие ошибки:

  1. 403 - Ошибка авторизации, доступ запрещён.
  2. 404 - Страница не найдена;
  3. 500 - Внутренняя ошибка сервера;
Реклама
  • BoostEX
  • 17 августа 2017 г. 16:45

C++ - Тест 001. Первая программа и типы данных

  • Результат - 73 баллов
  • Nordman
  • 15 августа 2017 г. 20:40

C++ - Тест 005. Структуры и Классы

  • Результат - 66 баллов

C++ - Тест 002. Константы

  • Результат - 33 баллов
Последние комментарии
  • EVILEG
  • 17 августа 2017 г. 18:33

Qt/C++ - Урок 069. Шифрование методом XOR

Не обратил внимания на это, Проверял с большим текстом.. По идее не должно.

Qt/C++ - Урок 069. Шифрование методом XOR

Шифрует/дешифрует текст от 8 символов, так и должно быть?

  • EVILEG
  • 15 августа 2017 г. 20:32

Qt/C++ - Урок 048. QThread - работа с потоками с помощью moveToThread

Нууу... тут уже вопрос к самому Qt4.8. Если честно, идей нет, да и копаться в deprecated коде желания тоже нет.

  • t000r
  • 15 августа 2017 г. 19:49

Qt/C++ - Урок 048. QThread - работа с потоками с помощью moveToThread

В qt5.6 всё нормально заработало. С 4.8 - нет

  • EVILEG
  • 15 августа 2017 г. 17:44

Qt/C++ - Урок 050. Логирование событий Qt приложения в текстовый файл

Я полистал информацию в интернетах, вроде как кто-то пытается подружить его с Qt5, но успешных результатов не нашёл. Да и на сайте как-то не заметно информации о том, что конкретно ему нужно, ...

Сейчас обсуждают на форуме
  • EVILEG
  • 19 августа 2017 г. 17:47

Проблемы с памятью

Добрый день! При работе со StackView, когда вы делаете push страниц, они постоянно добавляются и добавляются. Они не должны в данном случае удаляться, если вы просто пушите страницы в Sta...

  • MinusNol
  • 18 августа 2017 г. 16:22

WINAPI и Qt.

Да, покопаюсь. С WINAPI плохо знаком :) Но я уже существенно улучшил свой код благодаря вашему совету, благодарю вас :)

  • alex_lip
  • 18 августа 2017 г. 13:50

Я только учусь..(как правильно присвоить значение объекту другого класса)

хм. Похоже файл где-то в кэше остался. Я его второй раз  не прикреплял.

Сборка Qt / C++ проекта под windows и linux

нет, я тут кое что попробую- о результатах скажу)))

  • EVILEG
  • 16 августа 2017 г. 13:38

Перевод кодировки строки из windows 1251 в Utf-8

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