Pull to refresh
11
0
Karassev D. S. @Skerrigan

Java EE, QA-engineer

Send message

Честная генерация DOCX файлов на PHP. Часть 2

Reading time7 min
Views29K
image Здравствуйте, уважаемое хабрасообщество!
Продолжаем историю про генерацию DOCX средствами PHP.

Что нас ждет сегодня:
  • Мы узнаем, как вставлять изображения в документ;
  • Просветимся на счет English Metric Units;
  • Сделаем задел на будущую генерацию Exel.

Тем, кто не в курсе, рекомендуется прочитать первую часть. Ну а кто в теме – прошу под кат
Читать дальше →
Total votes 39: ↑36 and ↓3+33
Comments19

Шпаргалки для тех, кто делает первые шаги

Reading time1 min
Views31K


На картинке фрагмент отличной шпаргалки, где собраны основные электронные компоненты — их внешний вид и обозначения на принципиальных схемах.

Шпаргалка по электронным компонентам (PDF, 168Kb)
Шпаргалка по контроллерам AVR (ч.1) (PDF, 61Kb)
Шпаргалка по контроллерам AVR (ч.2) (PDF, 61Kb)

PS: Там же, на сайте, имеется любопытный блог с описанием эффектных электронных поделок. Культура исполнения на высоте, приведены ссылки на open source прошивки.
Total votes 135: ↑130 and ↓5+125
Comments42

Чёртова дюжина советов начинающим верстальщикам. Часть вторая

Reading time6 min
Views5.5K
Доброго времени суток!

О том, что вы читаете


Вот оно и свершилось — перед вами продолжение советов начинающим верстальщикам. Если вы не читали первую часть, то можете сделать это прямо сейчас.
В данной части вы ознакомитесь ещё с 11 советами (именно столько в моей второй заметке их находится).
Сперва мы пройдём нововведения в визуализации, а затем пофилосовствуем на тему семантики.

Ещё немного лирики


После выхода первой части я получил огромное количество feedback'a. Если честно, я не ожидал такого желания изучить что-то новое. Да-да, быдлокодеры там тоже есть. Но сейчас не об этом…
Также, как вы можете заметить, что количество человек, добавивших мой топик в избранное достигло миллиона, достаточно велико, что не может не свидетельствовать об огромном интересе к HTML5. Итак, поехали.
Читать дальше →
Total votes 115: ↑86 and ↓29+57
Comments51

SqlBulkCopy — безбашенная загрузка больших данных или как оседлать дикую лошадь (C#)

Reading time8 min
Views43K

SqlBulkCopy — это эффективное решение для массовой загрузки данных в таблицы Microsoft SQL Server. Источник данных может быть любой, будь то xml-файл, csv-файл или другая СУБД, например MySQL. Достаточно получить из источника данные в виде объекта DataTable или реализовать интерфейс IDataReader поверх методов доступа к данным.

Вам не придется создавать файлы на диске для дальнейшей их загрузки с помощью утилиты BCP, вам не придется писать код для генерации множественных INSERT запросов. При загрузке данных SqlBulkCopy работает на более низком уровне, позволяя вставлять миллионы записей за максимально короткий срок.
Читать дальше →
Total votes 40: ↑32 and ↓8+24
Comments8

Наголовный компьютер под управлением Linux — собери сам!

Reading time5 min
Views9.1K
В данной статье речь пойдет о самодельном наголовном компьютере с трудновыговариваемым названием WXHMD, созданном парижским умельцем по имени Паскаль. Это одноплатный компьютер (computer-on-module) Gumstix Overo Fire, укрепленный на наголовном дисплее Vuzix VR920. В итоге получилось устройство, дающее стереоскопическое изображение 640x480, имеющее аудиовход и аудиовыход, 3D-сенсоры наклона (3D tilt sensor), 3D магнитный компас, процессор TI OMAP3530 @ 600 MHz, ОС Linux, WiFi, Bluetooth. Питание — 1 ампер @ 3.7 вольт. Вес — 180 граммов.
Читать дальше →
Total votes 106: ↑98 and ↓8+90
Comments53

Оформление изображений на CSS3. Часть 2

Reading time2 min
Views4.4K
В предыдущей статье про оформление изображений была затронута тема создания у картинок идеально закругленных углов, строгих теней и других графических «фишек» с помощью свойств box-shadow, border-radius и transition. Т.к. эти свойства обрабатываются некоторыми браузерами некорректно, проблема кроссбраузерности была решена обёртыванием изображения в контейнер, где оно (изображение) используется в качестве фона.

Сегодня я подготовил перевод второй части, где решается еще одна проблема такого метода, а именно невозможность фонового изображения изменять размеры и, как следствие, невозможность использовать данный метод при проектировании масштабируемого (адаптивного) дизайна.

К счастью, обходной путь был успешно найден. О нем и будет рассказано в статье.

Читать дальше →
Total votes 65: ↑57 and ↓8+49
Comments34

«Загадочные отступы» между инлайн-элементами

Reading time15 min
Views31K
Каждому, даже самому «молодому» верстальщику известны неприятности (проблемы) с интервалом между элементами, пробелами, которые вставляются между словами. Эти пробелы часто мешают нам при вёрстке того или иного блока. Избавиться от них бывает не так-то просто, а зачастую эти межсловные расстояния и вовсе ставят нас перед выбором, выбором способа решения данной проблемы.

В этой статье мы попытаемся понять, что же из себя представляют эти загадочные "Отступы", что это за звери и с чем их едят. Так же рассмотрим, что такое inline-block, и почему после себя он ставит эти непонятные интервалы. Ну, и, самое главное, мы увидим несколько универсальных решений данного вопроса и, конечно же, обсудим все их стороны.
Читать дальше →
Total votes 127: ↑123 and ↓4+119
Comments141

CSS3. Работа с множественными фонами

Reading time7 min
Views103K
Мы уже ранее затрагивали возможности модуля CSS3 Backgrounds and Borders, рассматривая работу с тенями (box-shadow). Сегодня мы немного поговорим о еще одной интересной возможности — использовании нескольких изображений в фоне.

Композиция фонов



Существует множество причин, по которым, вам вообще может потребоваться композиция нескольких изображений в фоне, среди них наиболее важные — это:
  • экономия трафика на размере изображений, если отдельные изображения в сумме весят меньше, чем изображение со сведенными слоями, и
  • необходимость независимого поведения отдельных слоев, например, при реализации эффектов паралакса.
Могут быть и другие разумные причины :)
Читать дальше →
Total votes 43: ↑37 and ↓6+31
Comments14

10 основных ошибок в попытке изменить привычки и как их исправить

Reading time2 min
Views17K
Недавно натолкнулся на хорошую и краткую презентацию по GTD от Persuasive Technology Lab (Stanford). Эта тематика как и любому гику мне близка и интересна, книг было прочтено много, опыт работы есть уже значительный, в итоге выработался некий концепт того, как я считаю правильно не только работать, но менять свои привычки, который сильно пересекается с тем что я прочитал в презентации. Далее перечислены ошибки, которые мы обычно совершаем в попытке изменить свое поведение, привычки и жирным выделено их решение. На мой взгляд этот список полезен и при решении любых других задач.

1. Опираться на силу воли для долгосрочных изменений.
Представьте что силы воли просто нет. Это первый шаг к лучшему будущему.

2. Планировать и предпринимать большие шаги и задачи, вместо маленьких.
Успешно выполняйте небольшие задачи — одну за другой.
Читать дальше →
Total votes 60: ↑48 and ↓12+36
Comments25

Как люди образуют связи. Сообщество или социальная сеть 2

Reading time6 min
Views5.4K
От переводчика. Данный текст является вторым текстом минисерии из 4 публикаций, посвященных социальным сетям и сообществам, их сходствам и различиям, а также их взаимосвязи друг с другом.
  1. Сообщество или социальная сеть?
  2. Как люди образуют связи
  3. От слабых связей к сильным
  4. Поддержание сильных связей
Автор этой серии публикаций — Майкл Ву (Michael Wu), ведущий аналитик компании Lithium, специализирующийся в изучении социальных взаимодействий и онлайн-сообществ.




В своей предыдущей публикации я обозначил некоторые базовые различия между социальными сетями и сообществами с точки зрения социальной антропологии. Если вы не видели этой публикации, рекомендую вам быстро ознакомиться с ней: Сообщество или социальная сеть? (Community vs. Social Network). Потому что сейчас я продолжу свои рассуждения на эту тему.

Сегодня я продолжу наши мини-исследования по динамике и взаимодействию между сообществами и социальными сетями. Как вы помните из моей предыдущей публикации, люди в социальной сети держатся вместе благодаря заранее установленным взаимоотноошениям. Сегодня мы узнаем, как эти взаимоотношения устанавливаются изначально.
Читать дальше →
Total votes 31: ↑29 and ↓2+27
Comments4

Табы на чистом CSS, от IE6+ (реинкарнация одного решения)

Reading time5 min
Views12K
Была на Хабре статья о реализации табов на чистом CSS, которую автор удалил (видимо, из-за незавершённости решения), скрыв при этом все комментарии. Благодаря авторской наработке я устранил один из недостатков юзабилити в решении и опубликовал его в комментарии. Поведение табов стало обычным, по клику на табе (или кнопке, смотря как назвать), он выделялся и оставался выделенным после отведения мыши. Чтобы не терять из виду то и другое решение и для продолжения их развития, приведу копии их. Решение автора makzimko скопировано в песочницу (IE9+), сохранив все необходимые свойства. Дополнение — в модификации там же (от IE9+). Новое (UPD3) кроссбраузерное решение с поддержкой от IE6 — на jsfiddle.net и единым файлом. Наконец, при том, что Opera 11.61 работает, для поддержки Оперы 11.50 и младше понадобилось небольшое исправление (UPD4).
Читать дальше →
Total votes 40: ↑33 and ↓7+26
Comments28

Фриланс против бизнеса

Reading time5 min
Views1.8K
Фриланс, как массовое явление, появился совсем недавно, думаю не больше 10 лет назад, вместе с глобальным распространением и социализацией интернета, и на сегодняшний день эта модель деловой активности еще очень мало изучена, сегодняшние фрилансеры по сути — первопроходцы, изучающие новый способ жизни прямо на себе.

Я отправился в свое одиночное плавание в океане мировой экономики около 5 лет назад, но безопасный промысел в прибрежной зоне быстро наскучил, меня всегда манил открытый океан, где вдали проплывали огромные лайнеры мировых корпораций и быстрые яхты стартапов.

Для тех, кого, как и меня не удовлетворяет простая продажа своего времени на свободном рынке, опишу мой путь, который кажется мне самым прямым и очевидным курсом для эволюции фрилансера.
Вот как это бывает
Total votes 66: ↑61 and ↓5+56
Comments68

Динамический перевод страницы на другой язык

Reading time11 min
Views14K
Привет, Хабр.

Сегодня я расскажу о своих достижениях в области моментального изменения страницы — динамической смене языка. Эта штука понадобилась мне совершенно недавно, а так как сторонним реализациям я не доверяю (даже как-то и не нашёл их), то пришлось написать свою. За время её использования (где-то около полугода) я исправил все самые заметные баги (но это не означает, что их там больше не осталось :) ), и теперь представляю рабочую версию.

Кто-то скажет, что осуществлять перевод на клиенте нецелесообразно, но у меня получилось как раз такая ситуация, что по-другому никак нельзя: для серверного перевода приходится принудительно закрывать веб-приложения на странице, чтобы не потерять данные; в случае же с динамическим изменением языка, просто заменятся тексты на элементах и работа продолжается. Думаю, не меня одного раздражало «Настройки будут применены при перезагрузке». Моя реализация хоть и сложновата, но решает эту проблему.

Для того чтобы не путаться, я определю для данной статьи следующий перечень терминов:
Словарь — хранилище ключей, по которым осуществляется доступ к локализации на данном языке. По сути дела представляет собой обычный JavaScript-объект, где свойства — ключи доступа, а их значения — переведенные строки.
Хэш — объект, который является результатом упорядоченного слияния словарей; общий словарь, из которого впоследствии ведётся выборка перевода.

Теперь более детально.
Читать дальше →
Total votes 43: ↑36 and ↓7+29
Comments27

А зачем мне ТЗ? Я и так знаю!

Reading time5 min
Views28K
Проблема _непрочтения_ ТЗ встает практически каждый раз, когда "написатели" ТЗ и разработчики — люди из разных контор.

Этот пост — о Техническом Задании на разработку интерфейсов [для пользователей].

Разработчики – такие же люди, как и все. Читать талмуд об интерфейсе, написанный канцелярским языком – наверняка не очень приятное времяпровождение. Специалисты по интерфейсам разрабатывают ТЗ и передают их Заказчикам. И просят прочитать техническое задание (или спецификацию) – о том, как разрабатывать и изменять спроектированный интерфейс.

Что включает в себя техническое задание для разработки спроектированного интерфейса?


Читать дальше →
Total votes 34: ↑26 and ↓8+18
Comments29

Восстановление емкости аккумулятора ИБП

Reading time5 min
Views422K
Подавляющее большинство из нас использует такое крайне полезное устройство, как источник бесперебойного питания. Качество питания не везде идеальное, да и просто мельчайшие проблемы с электропитанием иногда могут дорогого стоить. Потери данных это всегда неприятно, а иногда просто таки фатально. Устройство куплено, установлено под стол, подключено и владелец его находится в полной уверенности, что в любом случае при перебое в электропитании он успеет корректно завершить работу, а может быть и сделать бэкап на флешку. Время идет, бесперебойник периодически дает о себе знать — как заправский сторожевой пес он подает голос при малейших отклонениях в параметрах электросети. Хозяин спокоен и все хорошо. Но в один из дней перебой таки случается и в этот раз ИБП не просто подает голос и сразу переключается с батареи на сеть, в этот раз свет выключили на долго. Мы спокойно копируем файлы (ведь в запасе у нас минут 15, не меньше) и тут бесперебойник начинает пищать совсем часто и все выключается. Как так? Ведь бесперебойник же должен был нас защитить от подобных ситуаций, а он только вселял нам ложную уверенность в нашей безопасности! Почему так произошло?

Все дело в аккумуляторных батареях, от которых наш бесперебойник и кормит все наше железо, когда внешняя сеть отключается. Но батареи эти, увы, не вечны, они деградируют, емкость их снижается, а вместе с ней и время автономной работы. Вплоть до нуля. К сожалению процесс, этот, зачастую никем не контролируется, хозяин пребывает в уверенности, что он защищен, а в это время аккумулятор уже не совсем аккумулятор, а так — муляж.

Читать дальше →
Total votes 129: ↑127 and ↓2+125
Comments99

Равномерное выравнивание блоков по ширине

Reading time4 min
Views19K
Продолжая свои «css-раскопки» возникла новая идея, разобрать по косточкам ещё одну актуальную тему, которая касается равномерного выравнивания блоков по ширине. В принципе мои доскональные исследования я уже запостил у себя в блоге, но так как прошлая моя работа очень понравились Хабра-сообществу, то я решил сделать здесь небольшой краткий обзорчик этой статьи, чтобы ни одна хабра-душа не пропустили её наверняка. Так что, как говорил Гагарин: «Поехали».

В общем в задачах вёрстки периодически возникают моменты, когда появляется необходимость выровнять какой-нибудь список по ширине экрана. При этом пункты этого списка должны выравниваться равномерно, прижимаясь своими крайними элементами к границам контейнера, а расстояние между ними должно быть одинаковым.
image
Читать дальше →
Total votes 172: ↑163 and ↓9+154
Comments87

MVC Application: Mail

Reading time1 min
Views3.2K
В продолжение к прошлому топику: Файловый менеджер.

1) Интерфейс создавался для работы на планшетном компьютере.
2) Не gmail, потому что нужно хранить сообщения на своих серверах, необходимо работать с любыми доменами, в том числе своими.
3) Одно из преимуществ клиента, созданного на PHP, – его доступность с любого места, где есть интернет.
4) Не roundcube, так как данный почтовый клиент использует библиотеку PHPMailer, поэтому может работать с POP3, IMAP ящиками и отправлять почту по SMTP протоколу.
5) Почтовый клиент, так же как и Файловый менеджер изъят из другого проекта.



Читать дальше →
Total votes 41: ↑34 and ↓7+27
Comments44

Беспроводная передача HD-видео и звука по Wi-Fi, дайджест — весна'12

Reading time10 min
Views395K
Уважаемый читатель, приветсвую тебя на просторах хабрахабра, этой уникальной площадки обмена опытом и мнениями. В этой заметке я хочу вернутся к теме беспроводной передачи высококачественного видео и звука без использования проводов, с применением различных технологий. При этом я буду рассматривать аспект беспроводной передачи шире, чем просто сетевое «расшаривание» фильмов и музыки. Необходимым и достаточным условием упоминания той или иной технологии будет возможность передачи экрана рабочего стола и работы любых программ, с поддержкой разрешения, не ниже 1280x720 (HD-ready/720p).
Поскольку с момента моих прошлых публикаций уже прошло довольно большое время (относительно этой, развивающейся взрывными темпами, индустрии), и появилось N-ое количество новшеств, то их описанием и хотелось бы поделиться.
Читать дальше →
Total votes 19: ↑19 and ↓0+19
Comments14

By lamers for lamers

Reading time4 min
Views1.7K

Я ламер.


Я, честно, не являюсь сверхпрофессионалом ни в одном языке программирования, не понимаю, как работает современное ядро windows, linux, в знании ассемблера не продвинулся дальше знания PDP11 и слегка x86 (да и то что знал — забыл), что такое функциональные языки узнал не очень давно и так и не удосужился изучить теорию, в итоге не очень их понимаю. Более того, я с трудом могу объяснить, как работает процессор, программировал ПЛИСы и PIC-контроллеры только в институте и было это очень давно.
Но почему-то у меня очень часто получается решить проблемы, перед которыми пасуют крутые профессионалы.
Вместе с этим мне хотелось бы поднять вопрос необходимости ШИРОКИХ знаний у любого IT'шника. Да и не только IT'шника.
Читать дальше →
Total votes 38: ↑22 and ↓16+6
Comments19

Честная генерация DOCX на PHP. Часть 1

Reading time4 min
Views72K
image Здравствуйте, уважаемое хабрасообщество! Как-то раз был на хабре интересный материал про генерацию doc-файлов средствами PHP. К сожалению, больше на хабре ничего на эту тему я не нашел. На тот момент я разработал собственное решение.
Оно состояло в том, чтобы генерировать .docx файлы. Аргументы были следующие:

  • На дворе 2012 год, а этот формат появился аж в 2007-м
  • Генерить .docx несомненно проще, чем .doc, поскольку .docx = .zip, а .doc — бинарный файл
  • Костыль с генерацией HTML и переименованием в doc не подойдет для более-менее уважающих себя проектов
  • С помощью приведенного ниже метода мы с легкостью сгенерируем Excel, и вообще всё что угодно.

Подробности под катом.
Читать дальше →
Total votes 73: ↑61 and ↓12+49
Comments19

Information

Rating
Does not participate
Location
Томск, Томская обл., Россия
Date of birth
Registered
Activity