gemelen: (Default)
Забавно за пару недель (upd: за неделю) до ICE приводить в порядок программный продукт, который там должен быть показан :)
Ровно обычная ситуация из этой нашей индустрии разработки ПО.
gemelen: (Default)
Не так давно поменял лицензию JetBrains IDEA на JetBrains Toolbox Subscription, и при релизе среды для разработки SQL-кода DataGrip (ранее известную как 0xDBE) решил попробоавить как она изменилась со времени ещё закрытого бета-тестирования (которое было на самом деле открытым, судя по расшаренным через пару часов линкам).
Среду причесали, явных глюков/багов/неровностей ранних версий не наблюдается.
НО! Среда по-прежнему коде-центрична. В чём это выражается? (чаще всего мне приходится работать с оракловыми базами, поэтому отталкиваюсь от такого взгляда на ситуацию):
1. при открытия базы по умолчанию открывается консоль для ввода SQL команд (как и в OracleDeveloper)
2. но ровно по тому же умолчанию виден очень узкий спектр объектов баз данных - только таблицы/вьюхи/сиквенсы. Всего того спектра, что ожидаешь увидеть, нет - индексы/пакеты/типы/процедуры, не говоря уж о тонкостях вроде дб-линков.
3. пользуясь практикой "коннектимся как SYSTEM, сетим current_schema в кастомного пользователя и работаем", получаем очень неудобную среду: объекты этой схемы не синхронизируются и недоступны ни для обзора, ни для интеллисенса при наборе SQL-команд. То есть только по памяти.
4. никакой диагностической/системной информации об объекте не видно.

Надо заметить, кто к релизу поправили возможность открывать консоли к одной и той же базе данных, правда почему-то через опцию Open new console, которая рядом с Open console.

В итоге, в ежедневной работе, когда чаще смотришь на таблицы чем пишешь запросы, DataGrip проигрывает вендорскому софту. Хотя для всяких более мелких систем вероятно эта среда будет лучше чем ничего (как например для H2/Derby/SQLite).
gemelen: (Default)

SELECT
expression1, expression2, ... expression_n
FROM
tables
WHERE
conditions
MINUS
SELECT
expression1, expression2, ... expression_n
FROM
tables
WHERE
conditions;

Oracle's minus operator.
gemelen: (Default)
With job change comes project change and some bizarre technologies like old-n-hairy OSGI.
There are some steps to get comprehensive environment.

All done with a lot of virtualization magic under SmartOS, thanks to Joyent and other guys whom deliver this amazing stuff.

0. Create project with Maven and its maven-bundle-plugin to produce bundle jar.
1. Make necessary changes to sources to start with.
For example, simple Activator class only with start() and stop() methods like

import org.osgi.framework._

class Activator extends BundleActivator {
def start(bc: BundleContext):Unit = { Console.println("started") }
def stop(bc: BundleContext):Unit = { Console.println("stopped") }
}

At this point you should be able to successfully package it locally.
2. Add sources under VCS control (or do it from start). I use git and bitbucket service for this time.
3. Here comes SmartOS:

[root@saule ~]# vmadm list
UUID TYPE RAM STATE ALIAS
...
e810ea3c-ac05-48e5-9a80-0c42bca99a6e OS 512 running postgres
3eb5876f-4577-4791-99d0-4b16b4cbe3d1 OS 800 running nexus
bea2edbb-443c-4291-8007-5d67cd038acf OS 2048 running teamcity
e8bec698-0cdd-45f1-a039-dfbd591864e9 OS 4096 running hq

I have rented dedicated server to do dirty work at, and there are already all vm-instances for software production cycle.
Everybody else can do the same with idea "one vm for one service" in mind.
"hq" hosts working shell+vim, is ready to edit code and run Felix container.
All used software is free and OSS (majority of them).
I use Nexus OSS version and Teamcity free version (up to 10 users, 20 build configurations and 3 build agents).
4. In Teamcity: create project, add vcs-root from bitbucket (with access via "deployment" key from "teamcity" vm), use auto-created or create by hand build configuration (which simply runs maven deploy).
5. In Nexus:
since OSS version shipped without some features, we should download and install plugin to be able create proxy repository from maven to OBR which will be used later in Felix.
Read and repeat instructions from Nexus OBR Plugin install
Then login into Nexus and create proxy-repo. Again, instruction is already done by some good guys Transforming a Maven Repository into an OSGi Bundle Repository
6. Download and unpack Felix dustribution in your working place ("hq" in my case).
7. Run Felix and add proxy repo from previous step via command

obr:repo add <repo-url/.meta/obr.xml>

8. Push sources to remote repo, which will trigger build in Teamcity and deploy to some repo in Nexus (snapshots for example).
9. In Felix

obr:list // to list all artifacts from proxy-repo added in step 7
obr:deploy <artifact>
felix:start <its id>


With some other things under the hood (maven deployment configuration and settings) and a bit of luck, you will get continuous delivery infrastructure.
gemelen: (Default)
Если идея настойчиво показывает большой сгенерированный класс красненьким, то стоит сходить в idea.properties за вот этим параметром

idea.max.intellisense.filesize=18000
gemelen: (Default)
Все уже видели и обсудили, поэтому для истории и, может быть, слоупоков :)
gemelen: (Default)
Нашел время и силы посмотреть всю запись с недавнего митапа по ФП.
В общем - молодцы, хотя я уже не попадаю в целевую аудиторию докладчиков - ничего нового, при всей скромности моих познаний, мне не довелось услышать.
В частностях, безусловна видна разница между Лапшиным и остальными докладчиками, где фулл-стэк знания, опыт, всё такое (нового тоже ничего не слышал, потому как читаю его жж) и где полуподпольные приложения знаний.
Больше всего потошнило от рассказа Александра Алексеева. Не знаю какой он программист, а докладчик - ну отстойный. Кривая речь сама по себе, неприятные и порой даже неграмотные обороты, безыдейный сам по себе доклад даже просто для обзора что такое Haskell.

Whoa

May. 7th, 2014 09:48
gemelen: (Default)
Читая пост про то как быть хардкорным удалёнщиком, я вдруг осознал, что именно этим советам (с поправкой на специфику) следовал, будучи членом "пати" в одной небезызвестной MMORPG.
У нас был режим партийной игры, расписание внутреннее и внешнее (клановое), цели, средства и тьма общения.
Вероятно, такая аналогия может дойти даже быстрее озвученной в посте.
gemelen: (Default)
Всё тот же Paul Phillips жжёт глаголом в обновлённой версии своих сожалений о проблемах в скале.
Подозреваю, что людям, близким территориально это видео уже не внове, но мы тут далеки от народа митапов и вообще каких бы то ни было движух.
PS: начали отсюда
gemelen: (Default)
Действительно качественное объяснение. Даже я вроде что-то понял :)
http://www.confreaks.com/videos/1287-rubyconf2012-y-not-adventures-in-functional-programming

via HN
gemelen: (Default)
Сценка, юмористическая:
Руководитель отдела (pl/sql-профиль) общается с другим программистом (бузинесс, pl/sql) по деталям нового таска. Дошли до технических деталей, о том что как куда передать запросу в умном оракыле. Мол вот у нас тут в груви-скрипте есть мап, а как его тудыть строкой аля "key=value" через колено? Спрашивают меня, мол ты тут растуси.
Ок, мозх, не просыпаясь, выдаёт сниппет навроде
  def m = [1:1,2:2]
  m.collect {it -> it.key + '=' + it.value}.join(',')

Другой программист видит, вдупляет, всё ок. Руководитель смотрит, думает, невыспанным мозхом не вдупляет. Красноречивый взгляд на две строки, мол как это... а это куда... а джойн чо...
Раздаётся звонок, руководитель общается с минуту.
Переводит взгляд на сниппет ещё раз и удивлённо так: ну да, это трансформ, а это джойн, годится.
Поднимает голову и понимает, что всё понимает!

Апплодисменты, актёры радуются.
gemelen: (Default)
Сводя к минимуму встретившуюся ситуацию, получаем такой groovy-код:
  class B {List xs}

  def a = [1,2,null, 3]
  def b = new B()
  b.xs = a

  def c = b.xs.sum {i = it -> i != null ? i : 0}
  println c
// 6

Однако, переходя в реальный код, когда объекты чуть сложнее слабанного на коленке, получаем уже мистическую картину.
  // структура из распарсенного xml
  // a.b.c.d.e, где e - интовое поле
  result = a.b?.c?.sum 
{ i = it?.d?.e  
  -> 
  i != null 
    ? i 
    : 0 
}

Вуаля, в i у нас нифига не e, а как раз самое d и поэтому видим КРОВЬКИШКИ. Чинится банально, хоть и не так выпендрёжно.
  result = a.b?.c?.sum 
{ it?.d?.e != null 
? it?.d?.e 
: 0 }
gemelen: (Default)
Умиляет, право, вот такое возмущение по поводу чистоты речи.
Свежайший контрпример, речь о задачах в системе управления ресурсами (ДА! я не написал багтрекер!): -Посмотри билет номер такой-то...
Пока сижу без ушей, поэтому реплика шаблон рвёт неплохо.

Java

Sep. 23rd, 2013 20:31
gemelen: (Default)

Java is a DSL for taking large XML files and converting them to stack traces

gemelen: (Default)
Вряд ли кому-то будет интересно.
Yandex.Mapkit in Android app )
gemelen: (Default)

-о, дядьку! є питання
ви якісь "мєтодології/процеси" в свому хуяк-хуяк дрівен дівелопменті використовуєте?

-Конечно. Процесс прост.
Huyak Huyak in Production Process:
1. Выписываем на одном листе список задач и все их закрываем.
2. Нанимаем любых средних программистов, они через неделю пишут эрланг код.
3. Показываем презентаху, выкатываем на тест.
4. Даем рекламу, приходят пользователи, быстро по логам закрываем дыры.
5. Увальняем прототайперов, вдвоем быстро переписываем код.
6. Оптимизируем и в продакшин.
7. Следующий цикл производства.

-баг\ішьсю\фіче трекінг?
ттд?

-Не не слыхали.
Все делается на расшареном двухстраничном документе со списком задач.
Каждая задача одна строка. Используется цвет.
...
У меня нет времени клацать по сайту что бы узнать кто что сделал.

-надо телевизор в офисе повесить, и на него выводить :)

-Это жир и нанять чувака который кричать будет неистово.
— Красные дисплей сука. Красный. Вы чо блядь совсем охуели! Быстро блядь убрать красный цвет!!!
:-)

Весь огонь отсюда
gemelen: (Default)
Аналитик:
При сохранении клиентом выписки в файл обеспечить наложение на данный файл ЭЦП банка.

Суровый разработчик:
Хорошо сказано: "обеспечить наложение". Коротко, точно, по-военному: "Поезд, стой! Раз, два..."

Однако позволю себе обратить внимание на следующие аспекты:
1. Подписание на серверной стороне аналитически никак не проработано, а технически возможно только при использовании встроенной крипитографической поддержки. То есть прежде всего должна быть решена эта задача.
2. А "обеспечить проверку" не требуется? Для каких целей предназначается наложенная подпись?
3. А что собственно понимается под "наложением"? Куда "накладывать"? Хранить в БД? Приписывать к файлу? Делать MIME документ с соответствующим контентом? Внедрять в соответствующую секцию файла Word или Excel? Частично ответ на этот вопрос должен дать п.2.

Прошу дать конкретные разъяснения, что конкретно необходимо сделать по данному запросу.

PS. Больше всего удручает то, что данная постановка исходит от сотрудника аналитического отдела...


Другой аналитик:
Уточненная постановка приведена в документе, расположенном по адресу
.../Docs/Черновики/Прикладные постановки/Защита данных/Порядок подписания выписки ЭЦП банка.doc

Суровый разработчик:
Постановка не пригодна для реализации.

Не указано, каким сертификатом банка производить подписание, как его задавать, где и т.п. Слова из п 3.3 "В глобальных настройках Системы добавить параметр «Криптосистема для выписок по умолчанию»." не дают ответа на данный вопрос. Надо где-то задавать сертификаты, причем для разных криптосистем.

Не совсем понятны следующие слова:
...
В предлагаемом контексте мне вообще не понятна необходимость данной настройки как у клиента, так и у пользователя, поскольку ... должна различать подписи банка с использованием различных криптосистем, которыми пользуются банки-клиенты компании. А способа проверки подписи помимо ..., насколько я могу понять, данная постановка не предусматривает...

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

Суровый разработчик:
Задача сформулирована следующим образом: «сделать на выписке кнопку, при нажатии на которую, отдавать пользователю архив с файлом выписки и подписью к нему, сертификат банка для подписи брать из глобальной настройки».

Работы по модификации ... по данному запросу не выполняются.

Profile

gemelen: (Default)
gemelen

June 2017

M T W T F S S
   1 234
56789 1011
12131415161718
19202122232425
2627282930  

Syndicate

RSS Atom

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jun. 23rd, 2017 17:24
Powered by Dreamwidth Studios