История началась с того, что наша маленькая, но гордая компания решила создать приложение для собственных логистических нужд. Обсудив нюансы работы и обозначив конкретные цели, я приступил к реализации. Спустя некоторое время была написана первая версия java приложения и отдана на растерзание тестирование логистам и сотрудникам склада. Более года все шло хорошо, баги успешно создавались и фиксились, функционал приложения постоянно расширялся и совершенствовался, автоматизируя все больше процессов, пока мы не столкнулись с необходимостью использования фискального принтера Posnet Temo HS FV Ej.
Читать полностью »
Новости информационных технологий - 32915
Because of the complexity или кроссплатформенная работа с фискальным принтером Posnet Temo HS FV Ej
1970-01-01 в 0:00, admin, рубрики: ПесочницаАлгоритм подсчета кол-ва расстановок n ферзей со сложностью меньше чем O(n!)
1970-01-01 в 0:00, admin, рубрики: ПесочницаПронумеруем строки и столбцы доски размером nxn номерами от 0 до n-1. Номер клетки будет иметь вид (i,j), где i – номер строки, j – номер столбца. Координаты ферзей будут иметь вид (i,p(i)).
Пускай у нас уже расставлены k ферзей в строках от 0 до k-1.
Тогда ферзь с координатами (i,p(i)), где i<k, может бить клетки в строке k с координатами (k,p(i)), (k,p(i)-(k-i)) и (k,p(i)+(k-i)), при этом нас интересуют только клетки с номерами столбцов от 0 до n-1.
Теперь определим битовую маску, для того чтобы определить, в какие клетки строки k нельзя ставить ферзя.
SV(k)=Sum(i=0..k-1,2^p(i))
SD1(k)=Sum(i=0..k-1,2^p(i) shr (k-i))
Если p(i)-(k-i)<0, то 2^p(i) shr (k-i)=0.
SD2(k)=Sum(i=0..k-1,2^p(i) shl (k-i)) and (2^n-1)
Если p(i)+(k-i)>=n, то 2^p(i) shl (k-i) будет отброшено при помощи and (2^n-1).
S(k)=SV(k) or SD1(k) or SD2(k)
где ^ – возведение в степень, or – побитовое или, and – побитовое и, shl – сдвиг влево, shr – сдвиг вправо.
В данном случае используется Sum вместо or, т.к. на любой вертикали или диагонали не может быть более одного ферзя.
Если записать рекуррентно, то получится
SV(0)=0
SD1(0)=0
SD2(0)=0
SV(k+1)=SV(k) or 2^p(k)
SD1(k+1)=(SD1(k) or 2^p(k)) shr 1
SD2(k+1)=((SD2(k) or 2^p(k)) shl 1) and (2^n-1)
Читать полностью »
Это рассказ о новой разработке RemObjects — компании, которая начинала с компонентов для Delphi, а сейчас выпускает целый набор компиляторов Elements для всех популярных платформ: Windows, .NET, JVM, Android, iOS, Cocoa. В набор входят компиляторы с языков Oxygene (клон Паскаля-Delphi), C#, Swift (бесплатный), на любом из которых можно писать для любой указанной выше платформы. И вот теперь в этот список добавляется новый язык — Java. Чем не повод для статьи на Habrahabr?
Читать полностью »
Если не срабатывает свойство translate при css анимации в мобильном Safari
1970-01-01 в 0:00, admin, рубрики: ПесочницаТо, что Safari стал для верстальщиков новым IE6 ни для кого не новость. Сегодня столкнулся с очередным багом, решение которого банально до невозможности, но отняло у меня час рабочего времени.
Итак, имеем блок, который должен непрерывно плавать вверх-вниз. Сходу пишем стандартный для такой анимации код:
.block {
animation-name: floating;
-webkit-animation-name: floating;
animation-duration: 3.0s;
-webkit-animation-duration: 3.0s;
animation-iteration-count: infinite;
-webkit-animation-iteration-count: infinite;
animation-timing-function: ease-in-out;
-webkit-animation-timing-function: ease-in-out;
}
@keyframes floating {
0% {transform: translateY(0%);}
50% {transform: translateY(8%);}
100% {transform: translateY(0%);}
}
@-webkit-keyframes floating {
0% {-webkit-transform: translateY(0%);}
50% {-webkit-transform: translateY(8%); }
100% {-webkit-transform: translateY(0%); }
}
Тестируем и видим, что данный код работает во всех популярных браузерах, кроме мобильного Safari. Причём согласно спецификации он должен поддерживать этот код. Далее замечаем ещё одну особенность. Если перейти в другое приложение или по какой-то ссылке и вернуться назад, то анимация начинает работать. Очень странное поведение Safari. То есть сам код ему понятен, но при обновлении страницы анимация сразу не хочет проигрываться.
Долгие поиски по различным форумам ни к чему не привели, поэтому решение было найдено методом «научного тыка».
Читать полностью »
Всем привет.
Хочу с Вами поделиться информацией как к «российским» ОС прикрутить репозитории CentOS и заменить установленные пакеты.
Всё началось, когда нашу организацию обязали перейти на «российское» ПО. В первую очередь начал искать серверные ОС. Как оказалось наши разработчики предлагают ОС на базе Linux, а в организации 100% windows платформа. Организация не маленькая, примерно 150 серверов только в одном округе.
После изучения рынка «российских» ОС выбор пал на ROSA и ОСь. ROSA это платная ОС и стоит не маленьких денег, но так как не очень уж хочется платить за воздух я остановился на ОС ОСь. Далее начинается самое интересное далее. У ОСи добавлен репозиторий от РосТех и в версии пакетов добавлена как правило одна буква:
1. Пакет от ОСи — openssh-6.6.1p1-33z3.el7.x86_64
2. Стандартный пакет CentOS — openssh-6.6.1p1-33.el7.x86_64
Первопроходцем должен быть AD на samba4, но тут возникает проблема. При установке зависимостей для samba4 yum не чего не может сделать с пакетами ОСи и соответственно пакеты не устанавливаются из-за неразрешнных зависимостей.
Все действия я делал на ОС ОСь minimal.
В общем решение этой проблемы следующее:
1. Необходимо закоментировать существующие репозитории.
2. Создать новый файл с CentOS'совскими репозиториями.
vi /etc/yum.repos.d/centos7.repo
Вот сам файл centos7.repo
Читать полностью »
Советы по использованию FactoryGirl без ORM
1970-01-01 в 0:00, admin, рубрики: ruby, Тестирование веб-сервисов, метки: FactoryGirlFactoryGirl это один из моих любимых инструментов для тестирования. Это один из первых инструментов — который я выбираю при работе вне фреймворков Ruby.
Читать полностью »
