• Какой сервис для хранения/написания/правки проектной документации используете вы?

    alexiusp
    @alexiusp
    senior frontend developer
    Мы используем продукты от Atlassian - Jira и Wiki. Jira - для ведения проекта и контроля багов, Wiki - для хранения сопутствующей документации, схем базы данных и всего такого прочего. Более того у нас настроено автоматическое создание тикетов в Jira по телефонному звонку или e-mail клиента. Я, к сожалению, не знаю технических деталей реализации, но это круто.
    Jira, на мой взгляд, ещё хороша тем, что в ней всю структуру и логику переходов и изменения состояний тикетов можно легко настроить под свои нужды прямо в системе, и она доступна как с рабочего места, так и в дороге (даже из дома можно, если приступ трудоголизма замучал).
    У нас тоже с безопасностью довольно строго, обработка персональных данных и всё такое, но против облака никто не возражает и вопросов по безопасности это не вызывает.
    Исходники мы, правда, безопасности ради, храним в локальном репозитории.
    Ответ написан
    2 комментария
  • Чем отличается код дилетанта от профессионала?

    alexiusp
    @alexiusp
    senior frontend developer
    Код профессионала может прочитать и понять любой дилетант. Код дилетанта иногда даже профессионал понять не может.
    Ответ написан
    Комментировать
  • Как реализовать локализацию php и javascript?

    alexiusp
    @alexiusp
    senior frontend developer
    Насчёт библиотек не знаю.
    Я делаю просто: выношу все тексты в .ini или .json файл. Этот файл потом считывается php скриптом.

    1. Для .ini файла там есть прямо специальная функция, которая считывает файл и делает из него ассоциативный массив. Этот массив с текстами (обёрнутый в класс разумеется) используется как самим php скриптом, так и во фронтенде - вставляется в виде json в глобальную переменную в самом начале страницы, до загрузки всех остальных джаваскриптов.

    2. С json файлом тоже не должно быть проблем. Его немного сложнее считывать в php, зато можно не заморачиваться о вставке его в страницу - его можно потом ajax-запросом загрузить, когда фронтенд загрузится и начнёт работать.
    Ответ написан
    Комментировать
  • Bootstrap responsive?

    alexiusp
    @alexiusp
    senior frontend developer
    bootstrap-responsive.css во второй версии адаптировал дизайн под маленькие разрешения экрана. т.е. "включал" все фишки верстки, которые менялись в зависимости от разрешения. особенно полезно это было, если сайт проектировался не только под десктопы, но и под мобильные устройства.
    в третьей версии они решили этот функционал включить "по умолчанию". Т.е. никаких дополнительных стилей типа bootstrap-responsive.css подключать не нужно - всё уже включено.
    Ответ написан
    Комментировать
  • Как подгружать js по надобности в AngularJS?

    alexiusp
    @alexiusp
    senior frontend developer
    Погуглите. "Всё уже украдено до нас" (с).
    Я видел как минимум два варианта реализации AMD подхода с ангуляром.
    Дмитрий указал ссылку на хабр, где описан один из вариантов использования Require.js в связке с ангуляром.
    Ответ написан
    Комментировать
  • Как подойти к созданию формсетов в angularjs?

    alexiusp
    @alexiusp
    senior frontend developer
    Это слишком общий вопрос.
    Всё сильно зависит от того, как вы себе представляете интерфейс, что вы хотите получить в итоге.
    Нужна ли вам, например, возможность редактировать данные в сущностях, или вам нужен только вывод на просмотр?
    Скорее всего это должен быть master/detail список или список с фильтром. Зависит от ваших сущностей. Опять же сейчас модно представлять всё не списком, а карточками, a-la Facebook.
    Ответ написан
    Комментировать
  • Web-разработка. Уровень погружения в язык программирования: PHP vs JavaScript. Где "глубже"?

    alexiusp
    @alexiusp
    senior frontend developer
    Из того, что не упомянули явно, можно ещё упомянуть хорошее понимание работы HTTP протокола (заголовки, POST/GET и пр.) ну и по возможности другие полезные протоколы: POP/SMTP например. Это особенно важно для работы со сторонними API, что сейчас в тренде. Ну и cURL обязательно прикрутите к PHP-сборке и попробуйте - на мой взгляд самый удобный инструмент для общения со сторонними ресурсами.
    Ответ написан
  • Выполнение кода вложенного контроллера после завершения AJAX запроса внешнего котроллера?

    alexiusp
    @alexiusp
    senior frontend developer
    Damir Makhmutov совершенно верно написал. В контроллере - функционал, отвечающий за отображение данных, а в сервисах - собственно получение данных.
    Ответ написан
    Комментировать
  • Как искать работу за границей?

    alexiusp
    @alexiusp
    senior frontend developer
    Так же как вы ищете её в своей стране.
    1.
    Заполняете профили в LinkeIn и XING.
    Погуглите сайты по поиску работы и хедхантеров. В Германии самый правильный - monster.de. В ваших странах не знаю.
    2.
    Конечно есть.
    Пишете резюме и сопроводительное письмо. Сопроводительное письмо, как отмечалось выше, лучше написать максимально модульно, чтобы можно было менять содержимое и адаптировать под конкретную вакансию - какие скиллы требует вакансия, те на первое место, остальное в хвост. Или можно несколько сопроводительных написать под разные типы вакансий.
    Первые интервью в любом случае будут по телефону и скайпу. В некоторых случаях этого достаточно. Мне, например, ехать на личную встречу не пришлось - и так взяли.
    3. в указанных странах не знаю
    5. твёрдый уровень - это не оценка. Постарайтесь оценить свой уровень по международным шкалам. В идеале иметь сертификат. Но лично мне обычно бывает достаточно общения на интервью, чтобы понять уровень владения языком. Соответственно постарайтесь в интервью не слишком завышать свой уровень владения. Если вы укажете слишком высокий уровень владения, а по ходу интервью выяснится, что он у вас слабее, могут возникнуть обоснованные сомнения в адекватности остальной, указанной в резюме информации.
    Удачи!
    Ответ написан
    Комментировать
  • Как определить факт изменения модели или скоупа angular.js?

    alexiusp
    @alexiusp
    senior frontend developer
    Согласен с Dmitry Dedukhin. Проще всего оформить это в виде директивы, которая будет хранить текущую модель, которая связана с полями для ввода, и последнюю сохранённую модель, с которой при каждом изменении текущей модели (что отлавливается с помощью $watch-ера) будет сравниваться. На этапе инициализации директивы нужно их проинициализировать одинаковым значением. При этом не забудьте, что если у вас значения не скалярные, то нужно делать angular.copy(), а то у вас будут ссылки на один и тот же объект и оно всегда будет равно друг другу.
    Ответ написан
    Комментировать
  • Как вызвать метод из шаблона в Angularjs?

    alexiusp
    @alexiusp
    senior frontend developer
    Вопрос сформулирован очень невнятно. Я тоже не совсем понял, что требуется.
    Включаю телепатию. Вы хотите, чтобы в шаблоне было записано некое имя функции, которая запускалась бы при загрузке этого шаблона, так?
    Вы хотите запустить функцию по завершению загрузки страницы или по завершению загрузки шаблона или это неважно? Хотелось бы конкретики, т.к. способов решения я вижу несколько.
    Ответ написан
  • Почему такая ошибка с Json?

    alexiusp
    @alexiusp
    senior frontend developer
    а где тут angular.js?
    Ответ написан
  • Как заставить диалоговые окна на ui jquery работать на мобильных устройствах?

    alexiusp
    @alexiusp
    senior frontend developer
    Я не смог решить эту проблему и перенёс все диалоги на отдельные страницы. Так получилось даже красивее - диалоговые окна съедали довольно много простраства на небольших экранах смартфонов.
    Ответ написан
    Комментировать
  • Как лучше реализовать мультиязычность на сайте?

    alexiusp
    @alexiusp
    senior frontend developer
    1) конечно второй вариант. каждый раз при добавлении нового языка переделывать таблицу - не комильфо.
    2) У вас шаблоны для разных языков различаются визуально? Я обычно делаю один шаблон, а все стандартные тексты (надписи на кнопках и т.п.) выношу в языковые файлы/классы. Т.е. собственно шаблон у меня один, просто он помимо собственно контента статьи ещё проходит этап простановки всех стандартных текстов из текущего языкового файла.
    3) То же самое, что и в вопросе номер 2. Я делаю для каждого языка свой файл, который подгружаю до того, как начинаю работать с видом. Из него и беру все текстовые константы, будь то надписи на кнопках или сообщения об ошибках. Из базы при ошибке приходит только код. По этому коду из текстового файла я беру текст и отправляю на клиент.
    Ответ написан
    Комментировать
  • Где правильно выполнять бизнес-логику веб-приложения?

    alexiusp
    @alexiusp
    senior frontend developer
    Если не хочется показывать алгоритм расчёта, то, конечно, только вариант 2. Даже если js-файл с алгоритмом как-то минифицировать, всё равно найдётся умелец, который его "дизассемблирует".
    Во втором варианте я не совсем понял, что понимается по "оперативной памятью", но полагаю, что проще всего все необходимые для расчётов данные хранить в сессии на сервере (см. $_SESSION) - так меньше данных придётся передавать от клиента к серверу, а значит и скорость расчёта несколько увеличится. Если какие-то промежуточные данные необходимы клиенту, то можно сохранять их либо в куках, как подсказал автор выше, либо в LocalStorage в DOM, либо, если вы используете jQuery, то в дополнительных атрибутах тегов тех полей, которым эти данные нужны. Посмотрите в сторону функционала jQuery.data(). ;)
    Ответ написан
    Комментировать
  • Как получить опыт для устройства на работу Python Developer?

    alexiusp
    @alexiusp
    senior frontend developer
    Соглашусь с вышенаписанным, что в вебе конкретный язык для джуниора не имеет особого значения - всегда можно переучиться. По своему, пусть небольшому, опыту могу сказать, что я и мои коллеги всегда смотрим на базовые знания соответствующих технологий. Я спрашиваю про ООП, MVC, какие-то особенности работы веб приложений. Мой коллега при поиске ораклиста спрашивал сколько нужно таблиц, чтобы описать некоторую предметную область (маленькую разумеется).
    А по поводу, где набираться опыта, у меня есть своя хитрость. Можно устроиться в бюджетную организацию, где есть свой отдел разработки. Я начинал в вузе. Если повезёт найти место, где активно занимаются разработкой всяких новых фишек. Причём разрабатывают своими силами, а не покупают или адаптируют готовые решения. Вот вам и плацдарм для пробы пера в Пайтоне. Берёте какую-нибудь задачу, которую нужно решить - расписание занятий на сайт или мобильное приложение для студентов или ещё что-нибудь. Получаете добро на разработку у начальства. И вперёд. Через год-другой у вас и строчка в трудовой и реальный опыт и есть, что рассказать на собеседовании. ;)
    Хитрость состоит в том, что в бюджетных организациях часто довольно низкие зарплаты по сравнению с коммерческими фирмами. Поэтому там всегда дефицит кадров и берут они программистов не особенно сильно придираясь. И текучка кадров там приличная. Как только молодёжь приобретает достаточно опыта, она сваливает в коммерческие фирмы, где платят больше. Всё это касается конечно провинции, в столицах, возможно, всё по-другому.
    Ответ написан
    Комментировать
  • Где необходимо применение ООП на Javascript?

    alexiusp
    @alexiusp
    senior frontend developer
    Если ты только начинаешь изучать ООП и Javascript, то пробуй применять его во всех своих проектах. Со временем сам поймёшь, где нужны объекты, а где нет. Исходя из моего опыта, чем опытней и профессиональней разработчик, тем меньше в его практике маленьких проектов, не требующих ООП.
    Ответ написан
    1 комментарий
  • Как получить JSON tree?

    alexiusp
    @alexiusp
    senior frontend developer
    Согласен с предыдущим ответом. json_encode/json_decode не меняют структуру данных. Так что нужно написать функцию php (или в БД), которая будет выдавать соответствующим образом структурированный результат.
    В примере, указанном тобой, как раз в качестве ответа предлагают подобную функцию. Лично мне тот ответ не нравится, т.к. там прямо в коде прошита структура данных с ключами. Стоит формату чуть-чуть поменяться - всё полетит, придётся всю функцию переписывать - это не очень хороший подход.
    Твоя структура в этом плане попроще - обычное дерево. Если никто раньше не ответит, попробую вечерком набросать рекурсивную функцию для обхода этого дерева. Уже раз десять подобные функции писал. В том числе и когда в вузе учился. ;)
    Ответ написан
    Комментировать
  • Каким образом в php можно достучаться до $_SERVER["request_uri"] за пределами iframe?

    alexiusp
    @alexiusp
    senior frontend developer
    А есть возможность заставить указывать вызывающую страницу в качестве параметра?
    Т.е., например, можно выдавать каждому, кто хочет открывать вашу страницу собственный идентификатор, и пусть все открывают страницу со своим идентификатором:
    iframe.php?referer=user1

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

    alexiusp
    @alexiusp
    senior frontend developer
    Меня интересует встречный вопрос: зачем это нужно? По-моему проще не давать прав на доступ к серверу тем людям, которые не должны читать ваши исходники. ;)
    Ответ написан
    1 комментарий