Information
- Rating
- Does not participate
- Location
- Москва, Москва и Московская обл., Россия
- Registered
- Activity
Specialization
Chief Technology Officer (CTO), Software Architect
Lead
Git
Linux
Docker
Database
High-loaded systems
SQL
English
Software development
Algorithms and data structures
Development of integration solutions
Был такой issue в предыдущем проекте — база изначально жила в Power Designer, из которой генерился DDL. Надо было добавить deferred constraints, которых не было по умолчанию предусмотрено в IDE. В итоге пришлось копаться в шаблонах, из которых PD генерил код или искать еще какой-то workaround. Чуть позже, когда количество костелей к IDE подобралось к критической отметке, PD был заброшен. Так что проблема существует, факт.
> «Это ведь не код сгенерировать, который реализуют какую-то логику, а описание структуры»
На самом деле, у всех IDE что мне встречались, которые позволяют моделировать структуру и писать код — есть куда большая беда, они в отсутствии живой базы не способны этот код отвалидировать. Так что существование dev-инстанса (или несколько шире — нескольких окружений разработки) как места разработки «на живую», с последующим внесением кода в репозитарий, мне представляется несколько более удобным вариантом.
А подход, когда структуры генерятся из IDE, а обвязка цепляется из отдельных текстовых файлов выглядит еще более разбродной. Хотя тут конечно же вопрос силы воли сопровождающего.
Искренне интересно ваше мнение по одному вопросу архитектурному. Есть типичная задачка — организация расширенного CRUD интерфейса к неким данным (файлы, фотографии, письма, дела, тикеты и т.п.). Под расширенным я скорее всего держу в голове функциональность гмейла, где есть поиск по различным атрибутам, множественное выделение, тэггирование, правила и пр. Насколько я понимаю, задача эта в ваших продуктах неоднократно решена.
Не встречалось ли вам среди опенсорса готовых решений достаточной абстракции для решения конкретно этой задачи? Я смотрел в сторону автогеренации кода во фреймворках Symphony, выглядит неплохо, но может есть что-то еще, более, так сказать, sophisticated? Как вы лично решали эту задачу в ваших продуктах?
Не смотря на то, что у вас велосипед вышел вполне симпатичный, вам сил, энергии и интереса хватить не дать ему умереть?
codex.gallery2.org/Gallery2:About
опенфото из ссылок выше умеет (или говорит что умеет)
en.wikipedia.org/wiki/Coppermine_Photo_Gallery
И вот это может оказаться полезным:
en.wikipedia.org/wiki/Photo_gallery_comparison
Ну да чего я буду вас гуглом учить пользоваться, затыкаюсь на сим
У меня на практике было пару таких мест, крупные IT контоы от 1000+ сотрудников, в которые процесс трудоустройства занимал по несколько недель. В первое я тогда не пошел, не дождался, завтраками кормили каждый день, хотя спустя месяц офер мне все-таки сделали.
Потом уже, поработав в таких конторах, я понял, что основной фактор подобных тормозов (исхожу из посылки что ты интересен работодателю) — это бюрократия (каждый кандидат утверждается/собеседуется у кучи людей) на которую накладывается нестабильность людей (один сегодня не может, другой заболел, третий в отпуске и т п).
Большие конторы куда более инертны при поиске кандидатов, надо это понимать и не принимать близко к сердцу, когда тебе следующее собеседование назначают через пару недель от текущего.
gallery.menalto.com/
www.zenphoto.org/
piwigo.org/
www.tinywebgallery.com/en/main.php
www.plogger.org/
phpalbum.net/
coppermine-gallery.net/
www.thephig.com/
studio.quintalinda.com/help/tools/openfoto-open-source-photo-gallery-script/
+ и еще с сотню думаю наберется
www.google.ru/search?aq=1&oq=open+source+photo+&sugexp=chrome,mod=10&sourceid=chrome&ie=UTF-8&q=open+source+photo+gallery
На самом деле мне другое интересно, Ostora.Photo это ведь сингл юзер веб-приложение, я ж его с друзями шарить не смогу (комменты под фото, пользователи/права, аутентификация из разных сервисов)?
А вот юзкейсы очень спорны, потому как подобное решение еще надо мейнтейнить, хостинг не бесплатен опять таки + надо озаботится резервированием. У макоюзеров есть iPhoto + Time Machine, у виндовс юзеров есть тоже что-то подобное, про линух юзеров молчу — у них вообще есть все. Кроме того есть куча веб-сервисов (Google Picassa, Flikr, Photo.(Yandex/Mail).ru, iCloud/Mobile.Me и т. п.) которые решают озвученные проблемы за раз.
Он «из коробки» поддерживает разные логические энвайроменты (когда на одной машине крутятся несколько разных версий dev / qa) или это уже забота деплой инженеров по разнесению?
Вообще интересная штука, спасибо.
По поводу выгрузки прода, совсем не обязательно каждый раз обновлять CI из свежеиспеченного физического дампа прода. Если предположить что структура прода между релизами не меняется (исключение — если quick fix выкатываете) то дамп можно сделать сразу после релиза, и потом его использовать вплоть до следующего релиза. Здесь исхожу из предположения, что данные, их свежесть, для обкатки не так важны.
А если подумать в сторону логического дампа, который требует только SCHEMA OWNER чтобы подропать все что было и пересоздать заново, то ДБАшники точно ничего не узнают :-)
Буду с интересом следить за следующими вашими статьями, пишите!
Видимо вы пошли по второму пути, где учитываете эти особенности, оборотной стороной этой медали миритесь с возросшей сложностью.
Что за продукт, если не секрет, к которому такие требования?
В зависимости от обсуждаемых с HR вопросов. Если денежных, то это своего рода способ изоляции твоего будущего руководителя от твоей будущей зарплаты.
[режим простых истин on] Делая приложение независимым от СУБД вы либо теряете бенефиты, которые предлагает та или иная СУБД (перфоманс как следствие) либо, погружаетесь в условную компиляцию или уровень абстракций от СУБД, пишите много кода, чтобы ваше приложение одинаково хорошо работало с _нексколькими_ выбранными СУБД. [режим простых истин off]
Хотя, признаю, бывают (редкие) случаи когда БД испольуется как черный ящик «тупо для хранения» и к СУБД возлагается минимум специфических требований.
На текущем проекте пошли еще дальше и активно юзаем переменные окружения — по аналогии с приведенным выше, это как если бы все дефайны заполнялись из них. Это удобно, например для того, когда один application server фактически шарит между собой несколько окружений (dev, qa, uat) и нужно передавать приложениям разных окружений начальные коннективити данные (сервер, инстанс, схема) + если у вас фактически в одном инстансе крутится несколько разных окружений (dev, qa, uat). Переменные окружения в этом случае, добавляя гибкости, выполняют роль профиля, который легко подсосать и приложениям, и легко передать в деплоймент скрипт (через параметры) который развернет базу. Таких профилей создается по количеству энвайронментов, выбор происходит соурсингом соответствующего .sh файла (например удобно через менюшку в ~$APPLICATION_USER/.profile на этапе логина + shell альясы типа setdev2).
Из других deployment-related полезностей — «обкатка» в CI среде патч- и ролбек- скриптов (которыми во время релиза докатывается/откатывается prod база). Для этого настраивается отдельный энвайромент, на котором автоматом (по шедулеру, по коммиту) сначала разворачивается последний прод клон, потом применяется набор патчей для разрабатываемой новой версии, потом применяются ролбеки и снова патчи (back-and-forth, back-and-forth) — т.о. гарантируется некая повторяемость, консистентность и атомарность релиза в части изменения БД.
В этих условиях автор описал нормальный рабочий воркфлоу найма сотрудников, так оно и должно быть, так оно и бывает [иногда / в нормальных компаниях / в компаниях без HR / со слабым HR / etc ].
Где-то на медиане 90ых был первый апгрейд на P75, который гнался до 120 MHz + 8 Mb + CD 2x + SoundBlaster со встроенным нч-усилителем (тогда почти все такие были) и я вновь возглавил технологические топы домашних пк :)
Всю школьную молодость промышлял тем, что собирал пк своим друзьям, одноклассникам и даже учителям — помогая сильно сэкономить на покупке по-компонентно, тогда это было актуально. Был даже такой чит-код для получения доп. скидки у барыг митинского радиорынка — представится своим, сказав заветную фразу про профсоюз.