Ошибка ld: symbol(s) not found for architecture x86_64

При попытке собрать php-5.2.10 на macOS 10.8.2, появляется ошибка ld: symbol(s) not found for architecture x86_64.

Решить проблему можно следующем образом:

1) добавляем в Makefile строку

EXTRA_CFLAGS=-lresolv

2) меняем в ext/iconv/iconv.c

#define iconv libiconv to #define iconv iconv

После этого php собирается отлично и без проблем.

Источник: https://discussions.apple.com/thread/3507736?start=0&tstart=0

Выравнивание дива по вертикали и горизонтали

Иногда бывает нужно отцентрировать div на странице, это достаточно просто сделать через абсолютное позиционирование:

 <!DOCTYPE html> 
<html> 
<head> 
<style type="text/css"> 
div { 
background-color: #000; 
height: 500px; 
left: 50%; 
margin: -250px 0 0 -250px; 
top: 50%; 
position: absolute; 
width: 500px; 
} 
</style> 
</head> 
<body> 
<div></div> 
</body> 
</html> 

Это создаст квадрат Малевича 500×500 пикселей по центу страницы.

Видео с Youtube поверх дива с position=fixed

Столкнулся с проблемой отображения iframe с видео c Youtube поверх дива с position=fixed

Вот решение:

прописываем у ссылке на ролик get параметр wmode=transparent и заводим в фрейме новый атрибут wmode=»Opaque

<iframe title=»YouTube video player» width=»480″ height=»390″ src=»http://www.youtube.com/embed/lzQgAR_J1PI?wmode=transparent» frameborder=»0″ wmode=»Opaque»>

Решение на JS с поддержкой jquery:

$(document).ready(function()

$(‘iframe’).each(function()
var url = $(this).attr(«src»);
var char = «?»;
if(url.indexOf(«?») != -1)
var char = «&»;

$(this).attr(«src»,url+char+»wmode=transparent»);
);

);

Отрывок из книги Сергея Тормашева «Наследие»

Даже волки, преследуя стадо оленей и пожирая слабых и плохо приспособленных, убивали лишь следствие. ГМО же боролось с самой сутью проблемы — уничтожала стадо по генетическому принципу. Ты не хочешь заботиться о себе и будущем своих детей? Тебе наплевать, что происходит с планетой и какая экология тебя окружает? Тебя не интересует, что ты ешь, пьешь, вдыхаешь? У тебя не хватает мозгов заработать достаточно денег на покупку чистой пищи в магазинах МАГБ? Тогда ГМО для тебя, добро пожаловать в фаст-фуд. Ешь на здоровье, и природа вздохнет спокойно — твои дети родятся нежизнеспособными и не дадут потомства. После твоей смерти уже никто не передаст следующему поколению твои гены тупоумия и недалекости. Вот что такое естественный отбор по Уэйну! Да будет так, и так будет!

Скругление углов на PHP / GD

Сегодня товарищ кинул ссылку на интересный скрипт, который позволяет округлять углы на php.
Полезная вещь. Вот код скрипта.

<?php
/**
* Углоскруглятель :)
*
* Sergey Fedotov <sergey89@gmail.com>
* Version: 1.1
*/

$filename = 'image.jpg';
$radius = 15;

/**
* Чем выше rate, тем лучше качество сглаживания и больше время обработки и
* потребление памяти.
*
* Оптимальный rate подбирается в зависимости от радиуса.
*/

$rate = 3;

$img = imagecreatefromstring(file_get_contents($filename));
imagealphablending($img, false);
imagesavealpha($img, true);

$width = imagesx($img);
$height = imagesy($img);

$rs_radius = $radius * $rate;
$rs_size = $rs_radius * 2;

$corner = imagecreatetruecolor($rs_size, $rs_size);
imagealphablending($corner, false);

$trans = imagecolorallocatealpha($corner, 255, 255, 255, 127);
imagefill($corner, 0, 0, $trans);

$positions = array(
array(0, 0, 0, 0),
array($rs_radius, 0, $width $radius, 0),
array($rs_radius, $rs_radius, $width $radius, $height $radius),
array(0, $rs_radius, 0, $height $radius),
);

foreach ($positions as $pos) {
imagecopyresampled($corner, $img, $pos[0], $pos[1], $pos[2], $pos[3], $rs_radius, $rs_radius, $radius, $radius);
}

$lx = $ly = 0;
$i = $rs_radius;
$y2 = $i;
$r_2 = $rs_radius * $rs_radius;

for (; $i <= $y2; $i++) {

$y = $i;
$x = sqrt($r_2 $y * $y);

$y += $rs_radius;
$x += $rs_radius;

imageline($corner, $x, $y, $rs_size, $y, $trans);
imageline($corner, 0, $y, $rs_size $x, $y, $trans);

$lx = $x;
$ly = $y;
}

foreach ($positions as $i => $pos) {
imagecopyresampled($img, $corner, $pos[2], $pos[3], $pos[0], $pos[1], $radius, $radius, $rs_radius, $rs_radius);
}

header(‘Content-Type: image/png’);
imagepng($img);

И снова fluxbox

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

Для начала обнаружил, что после перехода у меня слетела возможность переключаться на русский язык.
Это показалось странным так как setxkbmap у меня запускался в .xsession, но как я понял после запуска fluxbox
любые команды прописанные в startup игнорируются, поэтому прописал

setxkbmap -layout us,ru -variant ,winkeys -option grp:caps_toggle,grp_led:scroll,terminate:ctrl_alt_bksp,compose:ralt
в файл .fluxbox/startup перед командой запуска fluxbox
exec fluxbox
Прописал так же в этом же файле запуск коньков
conky&

Туда же добавляем обои рабочего стола, закидываем обои куда-нибудь в .fluxbox/bg/ и прописываем путь к обоене. В качестве обоены я решил использовать няшку из манги с тату-логотипом арчилинукса %))
Например вот так:
fbsetbg -f bg/archMangaBabe.jpg
Название виртуальных столов в панели — «Рабочий стол <N>» смотрится уныло и слишком длинно, поэтому решил поправить название на D<N>, правится это в файле .fluxbox/init:
session.screen0.workspaceNames: D1,D2,D3,D4
Можно немного сэкономить место на экране и сделать автоскрытие тулбара
session.screen0.toolbar.autoHide: true
Так как экран на нетбуке маленький, то удобно когда в тулбаре показывается как можно больше открытых приложений, так что изменил ширину тулбара с 70 на 80

session.screen0.toolbar.widthPercent: 80
Редактим .fluxbox/menu и добавляем то что хотим видеть в меню, а так же убираем ненужные пункты, у меня получилось что-то вроде этого:

[begin] (Trinity)
[encoding] {UTF-8}
[exec] (Terminal) {terminal}
[separator]
[exec] (Mc) {mc}
[exec] (Thunar) {thunar}
[separator]
[exec] (Eclipse) {eclipse}
[separator]
[exec] (Firefox) {firefox}
[separator]
[exec] (Climm) {terminal -e climm}
[exec] (Skype) {skype}
[separator]
[exec] (Moc) {terminal -e mocp}
[exec] (Alsamixer) {terminal -e alsamixer}
[exec] (Alsa reload) {terminal -e sudo alsactl restore}
[separator]
[exec] (Gimp) {gimp}
[separator]
[submenu] (System Tools)
[exec] (top) {xterm}
[exec] (top) {xterm -e top}
[separator]
[end]
[submenu] (Fluxbox menu)
[config] (Configure)
[submenu] (System Styles) {Choose a style...}
[stylesdir] (/usr/share/fluxbox/styles)
[end]
[submenu] (User Styles) {Choose a style...}
[stylesdir] (~/.fluxbox/styles)
[end]
[workspaces] (Workspace List)
[commanddialog] (Fluxbox Command)
[reconfig] (Reload config)
[exec] (About) {(fluxbox -v; fluxbox -info | sed 1d) | xmessage -file - -center}
[end]
[separator]
[exec] (Xlock) {xlock -mode blank}
[separator]
[restart] (Restart)
[exit] (Exit)
[endencoding]
[end]

Вот что получилось :)

 

 

Няшка Arch

 

Используйте fluxbox. Всем удачи!

javascript как узнать все свойства объекта

Небольшая функция на javascript, которая позволяет узнать все свойства объекта

Вот сама функция:

function fnShowProps(obj, objName){
    var result = "";
    for (var i in obj) // обращение к свойствам объекта по индексу
        result += objName + "." + i + " = " + obj[i] + "
\n";
    document.write(result);
}

Вот пример исползования:

fnShowProps(window.location, "location")

Результат:


location.pathname = /JavaScript/
location.protocol = http:
location.search = ?8
location.hash =
location.hostname = htmlcssjs.ru
location.href = http://htmlcssjs.ru/JavaScript/?8
location.host = htmlcssjs.ru
location.port =
location.reload = function reload() { [native code] }
location.replace = function replace() { [native code] }
location.assign = function assign() { [native code] }

Источник: http://htmlcssjs.ru/JavaScript/?8

 

foreach в javascript

Во несколько способов реализации foreach в javascript

Вариант 1:

for (var key in some_array) {
            var val = some_array [key];
	    alert (key+' = '+val);	
}

Источник: http://mihalytch.org.ua/programming/php/analogue-foreach-in-javascript.html

Вариант 2:

for(i=0, c=arr.length; i<c; i++) {
	my_func(arr[i]);
}

Нужно отметить, что второй вариант не совсем реализует foreach, так как перебираются только значения массива без ключей.

 

Немного об svn

[announce]Вот небольшой мануал по использованию svn[/announce]

Создать репозитарий можно вот так:

$ svnadmin create new_repo

Настраиваем svn вот так:
Идем в new_repo/conf и открываем в любимом редакторе файл svnserve.conf.
В нём мне пригодилось исправить только секцию [general] вот так:

[general]
anon-access = none
password-db = passwd

anon-access = none — этим сообщаем, что анонимный доступ нужно запретить
password-db = passwd — этим сообщаем, что пароли и логины пользователей svn находится в файле passwd

Файл passwd правим таким образом:

[users]
user = password
Запуск серванта svn в FreeBSD:
Если уже запущен, то убиваем процесс (скорее всего прекращать работу сервера через killall -9 не совсем правильно, да простит меня Джа)

$ killall -9 svnserve
$ svnserve -d -r ./new_repo

Чекаем свой проджект вот так:

$ svn co svn://my_name_user@host_svn/new_repo project_dir

my_name_user — пользователь svn
host_svn — хост с svn
new_repo — наша директория с репозитарием

project_dir — локальная папка проекта

Далее svn спросит пароль, имя ползователя и возможно задаст ещё пару вопросов, отвечаем..
Если всё правильно, то svn выдаст сообщение типа — Checked out revision n,
где n — номер версии (если репозитарий чекается первый раз, то версия будет 0)

Далее добавляем файлы своего проекта в папку проекта (project_dir) и делаем вот так :

$ svn add * Отправляем обновление на svn сервер:

$ svn commit -m «Добавляем файло в нашу репу ;) «

Вот и все! Кратко, дёшево и сердито, как и должно быть у бадлокодера %)))

З.Ы. Не забывайте про руководства svn и google! Всем удачи!

Немного о шифровании

Шифрование

Если нужно зашифровать отдельный файл (к примеру архив или документ) — можно воспользоваться утилитой openssl.
Шифрование файла file будет выглядеть так:

$ openssl enc -e -aes-256-cbc -k ПАРОЛЬ -in ./file -out ./file.encoded

или так:

$ cat ./file | openssl enc -e -aes-256-cbc -k ПАРОЛЬ > file.encoded

Параметр -k и пароль можно не указывать, тогда он будет запрошен во время выполнения команды.

вот ещё варианты:

$ openssl aes-128-cbc -salt -in file -out file.aes
$ openssl aes-128-cbc -d -salt -in file.aes -out file

Дешифрование

Расшифровать обратно файл можно будет командой:

$ openssl enc -d -aes-256-cbc -k ПАРОЛЬ -in ./file -out ./file.encoded

(параметр -e меняется на -d) ну или соответственно:

$ cat ./file.encoded | openssl enc -d -aes-256-cbc -k ПАРОЛЬ > ./file

Параметр -k и пароль можно не указывать, тогда он будет запрошен во время выполнения команды.

Комбинирование (Создание шифрованого архива, разбиение на тома)

Естественно команды можно комбинировать, и к примеру создание архива директории dir со сжатием gzip и шифрованием openssl aes будет выглядеть так:

$ tar -czf - ./dir | openssl enc -e -aes-256-cbc -k ПАРОЛЬ > archive.tar.gz.encoded

Рашифровываем (в обратном порядке):

$ openssl enc -d -aes-256-cbc -in ./archive.tar.gz.encoded | tar -xz

Плюс если шифрованный архив надо разбить на куски - добавляем split, все ограничивается только вашей фантазией :)

$ tar -czf - ./dir | openssl enc -e -aes-256-cbc -k ПАРОЛЬ | split -db 4M - arc

Склеиваем, дешифруем, разжимаем, разворачиваем:

$ cat arc* | openssl enc -d -aes-256-cbc | tar -xzf - 

Источник: http://belgorod.lug.ru/wiki/index.php

Шифрование GPG

GnuPG очень известный способ шифрования и подписи электронных писем или других данных, кроме того gpg предоставляет расширенную систему управления ключами. В данных примерах рассматривается только шифрование файлов
Самым простым является симметричный шифр. В этом случае файл шифруется с помощью пароля, соответственно расшифровать его може тот, кто знает этот пароль, никаких ключей не требуется. Gpg добавляет расширение «*.gpg» к имени зашифрованного файла.

$ gpg -c file                        # Зашифровать файл по паролю
$ gpg file.gpg                       # Расшифровать файл ( -o другой файл) 

Источник: http://vds-admin.ru/content/view/24/28//

Отрывок из книге Ф.Г. Углова — «В ПЛЕНУ ИЛЛЮЗИЙ»

[announce]Нашел интересный отрывок из книге Ф.Г. Углова — «В ПЛЕНУ ИЛЛЮЗИЙ». Вообще если будет время и желание обязательно напишу об этом человеке, а пока хочу представить отрывок из его книге для тех людей которые попали под промывку мозгов о том, что пьянство — э[/announce]

Нашел интересный отрывок из книге Ф.Г. Углова — В ПЛЕНУ ИЛЛЮЗИЙ». Вообще если будет время и желание обязательно напишу об этом человеке, а пока хочу представить отрывок из его книге для тех людей которые попали под промывку мозгов о том, что пьянство — это то что в России было всегда и естественно для нашей Родины. ( в числе тех кому промыли мозги по поводу истории употребления алкоголя у нас в стране оказался и я сам, поэтому собсвенно меня и заинтересовали подобные факты из книге )

 

 

Отрывок из книге Ф.Г. Углова — «В ПЛЕНУ ИЛЛЮЗИЙ»

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

 

Что можно сказать по этому поводу?

 

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

 

Западные русофобы усердствуют в доказательстве того, что у русских, мол, особая склонность к спиртным напиткам. Отголоски этой точки зрения нет-нет да и встретятся в нашей литературе. В связи с этим мне хотелось бы кратко коснуться истории данного вопроса.

 

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

 

В течение многих веков наш народ, истекая кровью, вел круговую оборону, отстаивая свою независимость. По 40-50 лет в столетие он находился в состоянии войны, и мирная жизнь была для него лишь короткой передышкой. В целом для России XIII-XVIII веков состояние мира было скорее исключением, а война — жестоким правилом. Воевать приходилось и на северо-западе, и на западе, и на южных, юго-восточных и восточных границах. В таких условиях требовалось невиданное напряжение сил всего народа, и именно поэтому в нашей стране намного позднее других стран потребление спиртных напитков получает широкое распространение.

 

Утверждение о том, что потребление опьяняющих напитков известно давно, верно, однако никогда это потребление не достигало таких размеров, как в последние два столетия, ибо до этого времени хмельные напитки изготовлялись в слабой концентрации, кустарно. Фабричное производство чистого спирта, а вместе с ним и потребление крепких напитков, получило широкое распространение лишь с начала 19-го столетия. Последнее обстоятельство и оказало огромное влияние на степень и быстроту распространения пьянства во всем мире и в нашей стране.

 

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

Скачать книгку можно тут

На сайте заработал раздел ‘Кодинг-медитация’

[announce]По мере возможностей буду выкладывать в раздел то что у меня накодилось за время функционирования. Начну с класса на php, который был написан одним из первых. Думаю в ближайшем будущем выложить самописный класс с пэджлистером и частично сворованные класы [/announce]
По мере возможностей буду выкладывать в раздел то что у меня накодилось за время функционирования. Начну с класса на php, который был написан одним из первых. Думаю в ближайшем будущем выложить самописный класс с пэджлистером и частично сворованные класы шаблонизатора и работы с мускулом.
Ссылка на раздел http://killercoder.ru/coding/

Сказка о драконе и воине

Жил был на свете Воин, Воин не знал о своем прошлом, но помнил он как появился на поляне с чудесными травами и прекрасными цветами и пошел Воин скитаться по Миру, Мир был чудесен, его окружали волшебные животные, по ночам с ним говорили звезды, а утром его встречало Солнце, которое проводило с ним весь день. Долго скитался воин, пока не набрел на дом в котором жила девушка неведанной красоты и если и было, что могло сравнится с ее красотой, то только красота ее сердца. Понял Воин, что не хочет он больше скитаться по миру, а хочет остаться с этой девушкой и быть с ней до самой смерти, чтобы она была рядом каждую минуту, когда он знает, что есть. И начал Воин жить с девушкой, и прекрасно они жили, утром вмести встречали Солнышко, а по ночам вмести разговаривали со звездами, и все было бы хорошо если бы не жил по соседству тиран страшный и не было бы у этого тирана армии жестокой, которая грабила и подчиняла себе людей. Как-то весеннем утром, когда солнышко только начало согревать землю своим теплом, пришли в дом к девушке всадники тирана, все в черных доспехах c эмблемой дракона на шлемах, солдаты привыкли, что все им дозволенно и не кто им не может ничего запретить и решили всадники воспользоваться небесной красотой девушки пока Воин был на охоте, но девушка не разрешила к себе прикоснутся за что ее убили, а дом подожгли, Воин был в лесу, когда увидел дым и что-то нехорошее почувствовал в своем сердце, а сердце воина всегда говорит правду и когда Воин пришел к дому, то увидел он то что осталось от дома после пожара и мертвую девушку рядом с клеймом дракона на теле. Не было предела горю Воина, он молчал держа на руках тело своей возлюбленной, а внутри сердце выло протяжным стоном, и если бы услышал кто этот вой, то понял бы что никогда не слышали песню печальней чем эта. Два дня и две ночи Воин лежал рядом с могилой девушке, а на третью ночь сердце воина покрылось мраком, в один миг Воин перестал ощущать жалость и сострадание к людям и был это самый страшный день в этом Мире, так солнечное небо заволокло тучами в тот миг, по следам Воин нашел путь к замку, нашел все что нужно, продумал, как свергнет и убьет тирана, а вмести с ним и всех его подданных и так и сделал, долго времени понадобилось Воину на осуществление своего плана, но так и было как он задумал, вот только с каждой новой смертью с каждой новой каплей крови, сердце Воина становилось темнее и настал момент, что перестали с ним говорить звезды и здороваться Солнышко по утрам, так как все небо заволокло темными черными тучами и сам Воин перестал существовать, а вместо него появился страшный дракон, сильный могущественный и безжалостный, у дракона этого появился свой замок на том месте где раньше был замок тирана, и армия со всадниками, которые были еще сильнее и еще могущественнее чем всадники тирана. И занимались всадники грабежами и подчиняли себе людей, так как всадникам дракона было дозволенно делать все. Как-то раз когда дракон восседал на своем троне в полном одиночестве в главном зале замка, к нему привели странника-философа, если и был в чем виновен философ, то только в том что много в нем было знаний, которые он получил в своих странствиях. Дракон хотел было сразу отдать приказ, чтобы философа казнили (так было принято поступать со всеми кто занимался философией в царстве Дракона), но так как дракону было скучно, он решил позабавить себя разговором со странником, и отпустив стражу остался с философом один на один, философ заговорил первый: «Знаю кем был ты когда-то и знаю кто ты есть сейчас и почему стал таким». Дракон удивился такой дерзости и сказал: «Не можешь ты знать кто я, старик, и не можешь знать моего пути, потому что кто и знал об этом того уже нет на этом свете, а кто пытался узнать, того я лично своими руками лишил жизни, ты видно с ума сошел от своих странствий раз смеешь у меня в замки так дерзить мне», а старик выслушал дракона и без страха продолжил: «Я знаю, что когда-то не было дракона, а был Воин с сердцем как чистый родник и умело это сердце разговорить со звездами и здоровалось с ним Солнышко каждое утро и любило это сердце девушку небесной красоты, но сломило сердце жестокость человеческая и умер воин, а вместо него появился дракон, который своей жестокостью и беспощадностью наводит страх на людей». Дракон, услышав такое, пришел в ярость. Да как ты смеешь говорить мне такое, я лично убью сейчас тебя и c этими словами вынув из ножен меч, дракон кинулся на философа, а старик поднял свою руку навстречу и все перед драконом застыло в один миг, только слова философа прозвучали в его ушах: «Я дам тебе еще один шанс, и исход битвы будет зависеть только от тебя», с этими словами дракон забыл все что помнил и в этот же миг Воин открыл глаза на поляне с чудесными травами и прекрасными цветами…