• В каких пропорциях лучше разбить жёсткий диск?

    Разбивайте золотым сечением. Ещё со времён Аристотеля это было оптимальным для разбивки жёстких дисков.
    Ответ написан
    Комментировать
  • Что необходимо установить для того, чтобы удобно программировать при изучении Python?

    Pjeroo
    @Pjeroo
    Веб-разработчик
    Linux, PyCharm
    Ответ написан
    Комментировать
  • Какие есть форумы/блоги по теме Домашняя автоматизация / Интернет вещей?

    IonDen
    @IonDen
    JavaScript developer. IonDen.com
    Нашел парочку:
    forum.smarthome.com
    cyber-place.ru
    www.smarthomehub.net/forums

    И может пригодиться: https://developer.apple.com/homekit/
    Ответ написан
    Комментировать
  • Какие есть сайты с IT-новостями на английском?

    olmerlv
    @olmerlv
    Кто в цари крайний? Никого? Тогда я первым буду!
    Ответ написан
    Комментировать
  • С чего начинать проектировать приложение?

    max-kuznetsov
    @max-kuznetsov
    Главный IT-архитектор
    Предположим, что с будущей функциональностью Вы определились. Тогда Вы точно знаете, кто или что будет поставлять данные, и кто/что будет их потреблять.

    Теперь выясните, кто будет обращаться к вашей системе, чтобы передать или забрать данные, а к чему будет обращаться Ваша программа. Те системы или пользователи, которые обращаются к программе сами, нарисуйте схематически на листе бумаги вверху. Те, к которым будет обращаться программа (включая БД), - снизу.

    Теперь нарисуйте под каждым нарисованным сверху субъектом прямоугольник с названием UI или API - это интерфейсы, к которым будет обращаться пользователь или внешняя управляющая система. Иногда UI тоже может обращаться к API. Объедините все прямоугольники с UI одним контуром и обзовите слоем UI. Объедините все прямоугольники с API и обзовите слоем сервисов.

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

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

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

    Получите логическую архитектуру. Разбросайте слои по серверам - получите физическую архитектуру.

    А дальше - детально прорабатывайте каждый маленький квадратик. Всё.
    Ответ написан
    2 комментария
  • Как и где хранить пользовательские данные в соответствии с законом "О персональных данных"?

    @nightwolf_du
    5 лет опыта. c#, js, sql.
    Цель этого закона выражена в простой фразе, на уровне самого высокого начальства -
    "В случае отключения страны от глобальной сети наш сегмент интернета должен остаться работоспособным и функциональным."
    Пример заметки - ria.ru/politics/20141001/1026332599.html .
    Просто примите меры по восстановлению работоспособности и бэкапам на территории страны в данном случае.
    Т.е. в суде сможете съехать даже с локальной копией данных.
    Ответ написан
    Комментировать
  • Как и где хранить пользовательские данные в соответствии с законом "О персональных данных"?

    kumaxim
    @kumaxim
    Web-программист
    В тексте этого закона написано примерно следующее: "персональные данные граждан РФ должны храниться на серверах, расположенных в пределах РФ". Вы где-то видите что эти данные должны хранится исключительно в РФ? Лично я там такого пункта не нашел.

    Лично для себя я придумал такое решение: ничего из Германии где у меня все настроено и прекрасно работает я переносить не собираюсь, но дабы не влететь на штраф от Роскомнадзора, я беру в РФ VPS'очку, устанавливаю там СУБД и настраиваю репликацию. Все! Формально я требования закона исполнил, регулятору придраться не к чему.

    Если пойдете по моему пути - заключайте с российским хостером договор и платите через банк ему на р/с, квитанции храним 3 года. Так в суде Вам будет легче доказать что Вы не "олень", если Ваша разборка с регулятором дойдет до суда.
    Ответ написан
    Комментировать
  • Как пояснить клиенту что такое технический долг и рефакторинг?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Клиент понимает только цифры, ему плевать на качество кода ровно до той поры, пока поддержка кода не станет ему в копеечку лишнюю. Приведите ему реальные доводы ЗА рефакторинг выражающиеся профитом в денежном эквиваленте и вуаля. Ну а если этих доводов нет - только личное мироощущение, то нужен ли рефакторинг?

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

    @mayorovp
    insert into Inventory (Make, PetName, Color) values ('@MakeI', '@PetNameI', '@Color')"
    Ну разумеется, в базу будут лететь строковые константы - вы же их и отправляете. Вот вы когда на C# пишете, названия строковых переменных в кавычки не берете - почему же вы так поступили на языке SQL?

    PS это что еще такое?!
    result = command.ExecuteNonQuery() > 0 ? true : false;
    Уберите лишний тернарный оператор, а то будете индусом!
    Ответ написан
    4 комментария
  • В чем заключается навыки UI / UX?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    Все зависит от направленности Вашего сайта и работа эта точно не кодера.
    Можно сделать качественно, но с недочётами или наоборот. Обычно, UX/UI подразумевает размещение элементов и блоков для УДОБНОГО использования и только УЖЕ ПОТОМ - дизайн.
    Конечно, это работа не дизайнера и не кодера, а UX/UI специалиста, который чётко понимает работу человеческого мозга, направление взгляда во времени, восприятие цвета, изображений и т.д и может сделать качественную "интеграцию" страницы веб-сайта (или иного интерфейса) с человеческим восприятием на интуитивном уровне.
    Ответ написан
    2 комментария
  • Ошибка при запуске PyOpenCL - что делать?

    Проблема может быть в том, что OpenCL у вас не зацепился, например. Видеокарта-то поддерживает его?

    Самый просто способ проверить — установить darktable (из репозиториев должен подтягиваться без проблем) и выполнить «sudo darktable -d opencl». Если ошибок не выдаст, значит проблема все же где-то в Python. Там же будет и информация обо всех устройствах, поддерживающих OpenCL. Если будет ругаться на что-нибудь, вероятно, не зацепился OpenCL.
    Ответ написан
    6 комментариев
  • В чем преимущества Python?

    @kazmiruk
    1. Для системных тулов, мат. вычисления, веб
    2. Множество готовых батареек, качественные веб-фреймворки, живое и дружелюбное сообщество
    3. Если мнение авторов питона - на сайте, мое - замечательный синтаксис, соотношение "скорость разработки - качество кода - скорость выполнения" одна из самых высоких
    4. Сегодня - питон (много работы, высокие зарплаты). Завтра - скорее всего java (очень активно идет развитие стека typesafe и, мне кажется, что в будущем он займет свою довольно внушительную нишу в веб разработке. Но это завтра может настать очень не скоро, если вообще настанет. Ну и это все таки не для веб студий и не для сайтов-визиток вариант. Проекты сложности выше средней с долгосрочной поддержкой). RoR - работы меньше, оплата еще выше. Пхп - работы горы, зарплаты намного меньше. Но вообще трудно сказать. Есть еще nodejs (развивается гигантскими скачками), но не могу про него ничего сказать толкового. Работы под него довольно много, но как изнутри не знаю.
    А вообще сейчас набегут Рубисты, Явисты, Пхпшники и начнется холивар, поэтому надо текать ) Изучив любой из php\python\ruby на достаточном уровне и выдавая качественный код Вы будете востребованы как специалист еще довольно долго.
    Ответ написан
    Комментировать
  • Python: как передать атрибут класса из функции в функцию?

    @Mintormo
    Неудивительно. В функцию pribafka параметры передаются по значению. Внутри к параметру прибавляется единичка, но у нас копия в параметре, а не оригинал переменной! Потому ничего и не меняется. Надо так:
    a = int(input(u"Пункт меню: "))
    if a == 1:
    self.sila = self.pribafka(self.sila)
    elif a == 2:
    self.lovkost= self.pribafka(self.lovkost)

    def pribafka(self, param):
    param += 1
    self.score -= 1
    print(u"прибавлено")
    Ответ написан
    2 комментария
  • Почасовая работа: уволить фрилансера или оставить и провести разъяснительные беседы?

    opium
    @opium
    Просто люблю качественно работать
    Если это было на трех скринах из тысячи то не стоит заморачиваться, если такой каждый второй то да стоит задуматься, информации для однозначного ответа в вопросе нет.
    Ответ написан
    Комментировать
  • Почасовая работа: уволить фрилансера или оставить и провести разъяснительные беседы?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    А с чего вы взяли, что вам лучше знать, как ему продуктивнее работать? У меня есть кодер, который колбасит свою работу и параллельно смотрит сериалы в оригинале на английском - учит язык. У него в углу экрана поверх всего маленькое окошко с видео. На скорость и качество его работы вообще никак не влияет. Ему так комфортно. С чего я должен ему что-то запрещать? Кто-то параллельно с работой будет слушать музыку. Кто-то на планшете какую-то игрулю будет проверять каждые 30 минут - вы этого всего не отследите, да и зачем? Не надо драконить людей, вы что, рабовладелец?

    UPD: По большому счету, вот эти ваши придирки и разборки как раз и снижают продуктивность. Вы сами себе вредите. Как правильно коллеги пишут - гнать в шею такого заказчика :)
    Ответ написан
    5 комментариев
  • Что представляет собой тестирование ?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Вообще вики можно для начала, а потом уже углубляться в литературу. Вот вам кратенькое описание, цель которого больше предоставить ключевые слова для поиска.

    Модульные, они же юнит тесты, предназначены для тестирования отдельных модулей/классов. Суть их в том, что мы тестируем поведение только одного класса за раз. Если класс ссылается на инстансы других классов - мы их мокаем. То есть подсовываем им фэйковый класс, который имеет тот же интерфейс, но внутри не реализациа методов, а проверка, вызывали ли метод, с каким аргументами, сколько раз вызывали и т.д. Так же методы мока могут возвращать стабы (заглушки), какие-то захардкоженные под какой-то кейс данные. То есть если мы пишем класс по работе с базой данных, сокет-сервер и т.д., нам стоит соединение с базой, сокеты и т.д. оборачивать в классы, что бы можно было потом подменить на моки это добро. Если у вас в юнит тестах идет реальная работа с файловой системой или что-либо в этом духе, то это уже попахивает интеграционными тестами. Подробнее можно почитать в документации к phpunit. Так же есть такая методология разработки как TDD, советую почитать "Экстримальное программирование" Кента Бэка в этом ключе.

    Сразу хочу отметить что юнит тесты это хорошо, но вот только рядовой разработчик на PHP редко пишет что-то, что стоит покрывать юнит тестами. Времени на их поддержку нужно не мало, а требования у заказчиков частенько меняются. В итоге тесты начинают комментить и толку от них становится ноль. А вот если вы пишите компонент/библиотеку, то тут юнит тесты обязательны (ну... не то что бы, но желательны). Так что я бы на вашем месте сконцентрировал внимание на первом этапе на интеграционных и приемочных тестах.

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

    Функциональное тестирование - это тестирования всего приложения в сборе. Если это REST API, то у нас через curl дергаются реальные методы, отправляются более менее реальные запросы и валидируются ответы. Если web-страничка, то это UI тесты с силениумом/phantom.js/zombi.js или, если нам не нужно еще и js тестить, просто curl + какой виртуальный браузер на том же php. Вообще по хорошему функциональные тесты не допускают никаких моков и т.д. но опять же если очень хочется то можно (опять же обращение к сторонним сервисам, контроля за которыми у нас нету).

    Но реалии таковы, что UI тестами покрывать проект не слишком удобно. Вопервых UI может меняться, а поддерживать их так же нужно. Во вторых это скучно. В третьих тесты могут просто падать... вот взяли и упали. И потом начинается, так, тесты опять упали... что там упало? А, не страшно, можно релизить. Так же на больших проектах UI тесты отрабатывают долго, очень долго, некоторых их просто ночью гоняют. Толку от тестов при таком подходе не слишком много, ибо разработчику стоит знать о том что что-то сломалось как можно быстрее. А так он приходит, видит что тесты опять красные, чинит эти красные тесты, и запускает... ждет... проходит пол часа к примеру, и где-то в другом месте отвалилось... Короче сами понимаете.

    Приемочное тестирование - по сути те же функциональные тесты, но подаются в контексте фича-спеков. Если вы работали когда-нибудь с QA отделом, то возможно слышали про такие штуки как acceptance criteria. То есть это тот чек лист, который должен проверить тестировщик что бы удостовериться что все хорошо. На основе этого чек листа можно написать функциональные тесты. Так же есть инструменты вроде Cucumber/Behat, которые позволяют писать спецификации в виде стэпов. В этом случае спецификации для этих инструментов могут писать QA а вы просто имплементите для них степы. То есть уменьшается прослойка между "acceptance criteria" и готовыми к выполнению тестов. Более того, стэпы можно реюзать, комбинировать, масса стэпов есть готовых, вам же необходимо только предоставить стэпы подготвалливающие систему (загрузка/генерация фикстур и т.д.). Короче лепота и удобно. Но медленнее интеграционных, зато не такие жесткие как функциональные, за счет этого их проще поддерживать. QA пишут спеку, реализуем тесты под эту спеку, пишем код под тесты, тесты зеленые - функционал готов.

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

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

    Короче почитайте про TDD и ATDD (можно и BDD затронуть, но тут не только от программиста зависит, менеджеры, заказчик или продукт-оунер тоже должны быть вовлечены, по сути этот подход хорошо работает в рамках продукта какого-то, на фрилансе и в аутсорсе редко можно встретить) , Continious Integration и Continious Delivery.
    Ответ написан
    Комментировать