• Как переквалифицироваться с desktop на web

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Если у вас есть опыт работы с C# было бы логично попробовать .NET ASP MVC, думаю освоение оного проблем у вас не составит. Работа с базами — различные ORM (от стандартного Entities Manager до Hibernate и прочее). Если говорить о бэкэнде то даже не вижу смысла использовать еще что-то такое эдакое. Разве что для задач реализации REST API и прочего. Фронтенд — тут уже чуть сложнее. HTML5/CSS верстка довольно простая штука, но тут опыт нужен. Знал много верстальщиков которые хорошо знали и особенности поведения тегов и свойств, но не понимали концепции (у них разметка зачастую была привязана к оформлению страницы, а это уже плохо). Но в целом это много легче чем C++/Boost/SPL. Javascript — тут стоит владеть функциональным программированием.

    Вообще, разница между программированием для десктопов и для WEB (если касаться серверной части и реализовывать на C#, PHP или Java) не сильно различается. Знать огромное количество фреймворков не обязательно, достаточно выбрать какой-то один. А потом взять другой будет все же достаточно просто.

    Удачи в ваших начинаниях.
    Ответ написан
    8 комментариев
  • Javascript(Coffee) best practice: как мне сделать это лучше?

    k12th
    @k12th
    console.log(`You're pulling my leg, right?`);
    Первый кусок кода — это восхитительный пример того, почему чейнинг в jQuery является злом.
    Ответ написан
  • PHP: нужно ли создавать массив перед его заполнением?

    @kastigar
    С isset абсалютно верно. Но я бы не стал называть это «чтение», т.к. isset — это специальная конструкция языка. Если вы попытаетесь спросить индекс не-массива, то:
    unset($a);
    echo $a['a']['b']['c']; // будет warning
    echo $a['a']; // тоже будет warning
    isset($a['a']['b']['c']); // не будет warning'а
    

    С записью тоже есть нюансы. Если переменная (даже если это элемент массива) не установлена, то её можно неявно использовать как массив. Но если она установлена и не является массивом, то могут быть проблемы:
    <?php
    unset($a);
    $a['a'] = 'a'; // это ок
    $a['b'] = 1; // это ок
    $a['a'][0] = 'b'; // перезапишет первый символ строки!!!
    $a['b'][0] = 'b'; // будет notice, про обращение к скаляру, как к массиву
    unset($a);
    $a['a']['b']['c']['d'] = 'str'; // тоже ок
    $с = new SomeClass;
    $с[0] = 'c'; // Если класс имплементил ArrayAccess интерфейс, то вызовется метод offsetGet,
                 // иначе Fatal error
    

    Так что если не уверены, что содержится в переменной или элементе массива, то лучше явно проинициализируйте массив.
    Ответ написан
    Комментировать
  • С выбором сервера для среднего офиса?

    @bondbig
    для среднего офиса
    Что за «средний офис в вакууме»? Сколько юзеров хотя бы?
    Контроллер домена
    Поискал, почитал, есть вариант завести на Debian
    Не надо. Нормальный PDC на Самбе не сделать, все равно вам от Win не деться никуда, т.к. семёрка одынэс и консультант. Потому и контроллер домена делайте на win, юзеры ведь на win сидят, как я понял, иначе зачем контроллер?
    Основную нагрузку будет создавать 1С, я бы не городил всё на одном сервере, как минимум резерв нужен. Нужно брать два сервера с большим количеством RAM и поднимать там сервер виртуализации (ESX, Xen, KVM), один сервер основной, второй — резервный.
    Вариант номер 2 — взять четыре физических сервера попроще, на одной паре линуксовое хозяйство, на второй паре — виндовое, либо просто раскидать по ролям. Один сервер помощнее, для 1с с базой, другие — попроще, т.к. DC, файлопомойка, консультант и остальное много ресурсов не потребует.

    Брать один большой сервер и взгромождать на него всё сразу — неправильно. В случае краха его по железу или по логике (ОС накроется или админ накосячит) — потеряете все сервисы одновременно и надолго.
    Ответ написан
    4 комментария
  • Поиск по массиву цветов

    GomelHawk
    @GomelHawk
    PHP / Symfony developer
    Я когда-то использовал следующий алгоритм (у меня стояла правда задача не получить абсолютно близкое значение, а просто цвет из близкой зоны, но вдруг что почерпнешь и для себя):

    1. Создается равномерный трехмерный массив (Р) в заданном пространстве с определенным шагом, к примеру 4. То бишь координаты в RGB у элементов будут 000, 400, 040, 440 и т.д.

    2. Проходим по всем элементам исходного массива (А) цветов и заполняем на базе этих данных наш равномерный массив (Р). Если у нас к примеру в исходном массиве (А) есть цвет 511, то запоминаем эти данные для самого близкого элемента в массиве (Р): Р[400]=511 иначе оставляем Р[400]=0

    3. Теперь нам достаточно при поиске ближайшего цвета (В) просто обратиться напрямую к ближайшему по сетке элементу массива (Р):
    В[301] -> ближайший цвет в сетке 400 -> Р[400]=511 -> ближайший исходный цвет 511…
    Ответ написан
    1 комментарий
  • .NET. Где можно найти таблицу HResult кодов для IOException?

    @centur
    А не проще интерпретировать и обрабатывать только те hresult которые умеете, а остальные выкидывать выше.
    У HRESUL же относительно понятная и документированная структура
    en.wikipedia.org/wiki/HRESULT
    msdn.microsoft.com/en-us/library/aa378137(VS.85).aspx

    Все исключения всё равно не обработаете…
    Ответ написан
    2 комментария