• Как научиться декомпозировать задачи?

    dimonchik2013
    @dimonchik2013
    non progredi est regredi
    Ответ написан
    Комментировать
  • Как научиться декомпозировать задачи?

    Adamos
    @Adamos
    Дробить задачу еще на более мелкие совсем не охота

    Ну и зря. Вообще-то технологиям планирования совместной работы уже не первый век, и важнейший этап - как раз выделение тех участков работы, которые критичны для начала работы на других участках, и подтягивание их на диаграмме Ганта как можно раньше, чтобы уменьшить простой. Потом уже менее критичные задачи ложатся на свободные участки и параллелятся относительно друг друга.
    Так, например, нас учили делать генплан строительства еще 30 лет назад. До популяризации в РФ всяких там Скрамов и Канбанов.
    Ответ написан
    8 комментариев
  • Как избавиться от многочисленных if/else?

    Adamos
    @Adamos
    class CalculationData;
    
    abstract class Calculation 
    {
      public function calculate(CalculationData data);
    }
    
    class CalculationQueue 
    {
      public function addCalculation(Calculation calculationVariant, int priority);
    
      public function calculate(CalculationData data) {     
         for (c in calculations) {
           if(res = c.calculate(data)) return res;
         }
      }
    }
    Ответ написан
    4 комментария
  • Есть ли модуль для NodeJS для работы с КриптоПРО CSP?

    @retuned
    Кроме как внешним вызовом, думаю, сейчас Node JS не сможет подписать файлы средствами Крипто Про CSP.
    1) Консольная утилита "cryptcp -signf" как раз делает отделенную подпись в формате PKCS#7. Покупается у Крипто Про.
    2) на Java + Крипто Про JCP написать jar с обертками функций
    3) на C# под Крипто Про.NET опять же написать обертки и реализовать как rest-сервис или exe-шник для вызова.
    4) на C/C++ написать то же, что в п. 3) или dll/so. Это даже дешевле, т.к. не надо покупать ничего кроме CSP. Но это посложней.

    Ещё как идея - использовать для Node JS версию OpenSSL с поддержкой ГОСТ и набора параметров от Крипто Про. Тогда Node JS будет нативно работать из модуля crypto. Возможно, придётся компилировать Node JS из исходников.

    Я ещё не отговорил использовать Node JS для вашей задачи? :)

    Вряд ли мой совет актуален, но в поисковике часто вылазит эта тема, так что может кому пригодится.
    Ответ написан
    5 комментариев
  • Float удаляет ноль?

    DarkRaven
    @DarkRaven
    разработка программного обеспечения
    Нули не удаляются. Ваша проблема в форматированном выводе. Так как 1000,00 и 1000 равнозначны, то, чтобы вывести в нужном формате, вам следует использовать следующую конструкцию:
    string.Format("{0:0.00}", myNumber);
    Ответ написан
    Комментировать
  • Входит ли в обязанности архитектора обзор цен на стек технологий?

    lxsmkv
    @lxsmkv
    Test automation engineer
    Неважно архитектор вы или нет, но если вы предлагаете техническое решение, то вопрос резонный со стороны тех кто будет открывать кошелек, сколько все это обойдется. В принципе-то хороший индикатор что вашим решением заинтересовались, если думают о деньгах. Значит оно решает насущные проблемы, а не пространные теории неизвестно о чем.
    Отказаться предоставить приблизительную смету будет со стороны смотреться как будто вы этим вопросом никогда не интересовались а это в свою очередь значит что вы не учитываете интересы потенциальных заказчиков или фирмы. Ваша смета не должна быть особенно точной, людям нужно представление сколько нулей у итоговой суммы :) Укажите что цены на текущий момент. Если спросят а можно ли дешевле, то будете думать дальше а так среднего арифметического на салфетке вполне хватит.
    Ответ написан
    1 комментарий
  • Какие технологии и языки учить, чтобы 100% найти работу?

    @bkosun
    на самом деле.... это совершенно не важно с чего Вы начинаете. Нужно знать хотя бы несколько языков, чтобы понять все аспекты программирования. Главное начать!

    11603526.jpg
    Ответ написан
    Комментировать
  • Какие технологии и языки учить, чтобы 100% найти работу?

    IonDen
    @IonDen
    JavaScript developer. IonDen.com
    Попробуйте начать с изучения вакансий и тех требований в что в них написаны.
    Вот например у нас сейчас открыты 3 Graduate вакансии.
    Ответ написан
    2 комментария
  • Какую базу данных использовать для большого кол-ва данных?

    Такое количество данных не является большим, а "быстрота отзывчивости" зависит не от того, какую СУБД вы используете, а как строите схему и запросы.
    Возьмите mysql и прочитайте "High Performance MySQL".
    Ответ написан
    Комментировать
  • Правда ли, что в MS SQL Server создавать временные таблицы лучше вне транзакции?

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

    Для одиночных инструкций(одного запроса SELECT,INSERT,UPDATE,DELETE) существует альтернатива - Обобщенные табличные выражения(CTE) - link

    Разумеется если временная таблица вам нужна больше чем на 1 запрос - такой подход неприменим.
    Ответ написан
    7 комментариев
  • На чем пишут автомобильный софт?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    На яве делают обычно GUI + медиацентр. Да и то не всегда на яве. Сам медиациент общается с автомобилем по шине CAN, иногда, в редких случаях еще и по ethernet (привет Tesla). На шине CAN сидят бортовые компьютеры, датчики, компьютеры управления подвеской, тормозами, мотором. Всё это хозяйство может быть реализовано как в железе ПЛИС (verilog), так и на SOC (пишется на C/C++).
    В современном авто от двух до 15 компухтеров разного назначения, а то и больше.

    Вот, достаточно внятная статья - auto.howstuffworks.com/under-the-hood/trends-innov...
    Ну а вообще, по ключевому слову automotive
    O! www.cvel.clemson.edu/auto/systems/auto-systems.html - тыкаем на картинке в компоненты и читаем!
    Ответ написан
    Комментировать
  • Чем нарисовать план дома?

    @AlexandrKom
    MS Visio думаю хорошо подходит для задач подобного рода, сам рисовал планы установки электро-оборудования в здании.
    Есть неплохая библиотека элементов: само собой - стены разной толщины, двери, окна, лестницы, и в соответствии с гостами библиотеки электро-разводки, трансформаторы и тд. Сантехника (гв, хв, канализ) так же присутствуют - td-visio.ru/biblioteki-visio/inzhenernye-sistemy/s...
    Ответ написан
    1 комментарий
  • Как правильно хранить структуру c#?

    @Free_ze
    Пишу комментарии в комментарии, а не в ответы
    Выглядит как сравнение "хардкод vs контейнер". Разница очевидна: Dictionary обеспечивает поиск со сложностью O(1) (против O(n) у свича) и способен динамически расширяться.
    В контексте задачи это похоже на DI для бедных. В этом случае Dictionary будет нагляднее.

    ИМХО по коду

    Не лишним было бы почитать стайлгайд для C#
    Ответ написан
    2 комментария
  • Как сделать наследование от нескольких классов в C#?

    @Neonoviiwolf
    Flutter developer
    Невозможно, используйте интерфейсы и композицию
    Ответ написан
    Комментировать
  • Что почитать об архитектуре приложений и фреймворков на php?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    В целом сразу вас расстрою, то что вы хотите нельзя "разобрать" за пару месяцев. На это уйдет пару тройку лет. И книги которые стоит по этой теме прочитать имеет смысл перечитывать. Ну и практика практика практика.

    Так же хочу заметить что "архитектура" это не что-то эдакое, а общее понимание команды разработчиков о том как функционирует приложение. Если этого общего понимания нет - у вас нет архитектуры. У многих разработчиков понимание пропадает уже через пару месяце стихийной разработки. Так что помимо архитектуры важно еще и процессы/методологии разработки подтянуть.

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

    но совершенно не имею представления о правильной архитектуре приложений на php


    "Правильно" не бывает, все зависит от задачи. "Правильная" архитектура является:

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

    Вот и все. Далее уже есть принципы SOLID (читать Роберта Мартина), GRASP (Крэйг Ларман), GoF (лучше тут почитать head first design patterns или даже начать с Мэта Зандстры, у него помимо паттернов еще про процессы мельком рассказано).

    Ну и смысла в этом всем нет если вы еще до конца не осознали что есть инкапсуляция и полиморфизм. Многие могут рассказать что значат эти термины, но на практике эти знания они не могут применить (чаще всего страдает инкапсуляция)

    или написании чего-то своего с нуля на чистом php


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

    идеально было бы вообще подробно расписанное сравнение внутреннего устройства нескольких фреймворков


    Берете Symfony или Zend и вперед. Все остальные фреймворки "проще". То есть скрывают больше от разработчика. После них уже можно брать что угодно.

    p.s. еще прочитайте тут: www.phptherightway.com
    Ответ написан
    12 комментариев
  • Как точно подсчитать время создания программного продукта?

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

    Есть хорошая мантра:

    таски на 4 часа мы делаем за 4 часа, таски на 8 часов мы делаем за 12, таски на 16 часов мы делаем за 24, таски на 40 часов мы не делаем никогда.

    Просто старайтесь делать декомпозицию задачи на как можно меньшие кусочки. И домножайте на коэффициенты рисков (в вашем случае - 4). Со временем этот коэффициент будет уменьшаться и вы будете точнее предсказывать сроки.
    Ответ написан
    Комментировать
  • Как мы вы или они никогда не разберутся в жизни страусцовых улиток и французских булок?

    @iv_k
    ищите задачи на стыке программирования и строительства, например написание программ для моделирования конструкций в 3Д проектировании.
    Ответ написан
    Комментировать
  • Как мы вы или они никогда не разберутся в жизни страусцовых улиток и французских булок?

    @Karmashkin
    не слушай никого и закончи универ!
    печальная ковбойская история "я передумал быть строителем" в поисках работы тебе точно не поможет :)
    Ответ написан
    1 комментарий
  • Как правильно организовать архитектуру веб-сервера?

    DmitriyEntelis
    @DmitriyEntelis
    Думаю за деньги
    Ох. Ну давайте подряд. Начнем с конца :-p
    3) Мгновенного поиска не бывает. Так что нужно сразу понимать необходимой быстродействие. Кому то и 1500ms "мгновенно", а кто то хочет за 10ms данные получить.
    Критические вопросы:
    - какой объем данных в базе всего
    - какое количество поисков случается в секунду
    - насколько поисковые запросы избирательны (ответ на поисковый запрос это единицы записей или десятки тысяч)
    - насколько консистентна и релевантна должна быть поисковая выдача с учетом постоянных апдейтов.
    - сколько есть денег на сервера ;-)

    Если данных мало (< 1gb плюс минус) я бы не парился и записал это все в обычный mysql навешав на него 100500 индексов. Дальше нужно померять производительность на запись-чтение, если все устраивает - на этом и остановиться.

    Если данных больше и хочется освоить что то новое - я бы посмотрел в сторону Elastic Search.
    Ребята из 2gis как раз пару лет назад его внедряли https://habrahabr.ru/company/2gis/blog/213765/ документации по нему море. Из минусов - выдача всегда будет отставать от горячих данных.

    Если нужен поиск по горячим данным и при этом быстродействие mysql не устраивает - у меня нет хорошего ответа :) Можно какую нибудь кассандру посмотреть, можно свой велосипед напилить, но тут советовать лично мне - сложно.

    2) Нода, питон, руби, пхп - дело вкуса абсолютно. Основная нагрузка (если речь не идет про велосипеды) будет все равно на БД идти. А велосипеды лучше на C++ писать такие.

    1) По Вашему посту у меня больше вопросов чем ответов если честно. Что за json, откуда они берутся, как будут разрешаться конфликты если новые json приходят быстрее чем обрабатываются старые, итд.
    В целом это более тривиальный вопрос чем задача быстрого поиска.
    Ответ написан
    5 комментариев
  • Почему пишут вот так?

    @nirvimel
    Так делается для того, чтобы оставить за собой возможность впоследствии поменять реализацию не меняя интерфейс. Например, в будущем может потребоваться заменить реализацию ArrayList на LinkedList, если бы в качестве типа переменной был указан конкретный класс, то к тому времени код мог бы уже обрасти различными обращениями к, специфическим для конкретного класса, методами, выходящими за границы интерфейса List. В таком случае при замене реализации на LinkedList пришлось бы выискивать в коде и выкорчевывать оттуда все обращения к специфике ArrayList. На сколько это адски сложная задача знают все, кому приходилось работать над крупными проектами. Поэтому люди, знакомые с этой проблемой, предпочитают предупреждать подобные проблемы заранее, то есть во всех местах, где возможна смена реализации в будущем (то есть почти везде), стараются пользоваться исключительно интерфейсами, вместо того, чтобы опираться на конкретные реализации. В данном примере, если в качестве типа переменной был бы использован интерфейс List, то смена реализации ArrayList на LinkedList решалась бы заменой всего одной строки не зависимо от масштабов проекта.
    Ответ написан
    Комментировать