All posts by amri

Оптимизиране на изображенията (png,jpg)

Идеята е да се оптимизират изображнията за по- бързо зареждане и според Google PageSpeed Insights:

find . -iname '*.jpg' -print0 | xargs -0 jpegoptim --max=90 --strip-all --preserve --totals;
find $PWD -type f -name "*.jpg*" -execdir jpegoptim -v --strip-all --max=85 --preserve '{}' \;
find . -iname '*.png' -print0 | xargs -0 optipng -o7 -preserve;

Резултата:

./images/back.jpg 85x203 24bit Adobe  [OK] 1044 --> 724 bytes (30.65%), optimized.
./images/322.jpg 100x100 24bit JFIF  [OK] 3044 --> 2666 bytes (12.42%), optimized.
./images/257.jpg 100x100 24bit JFIF  [OK] 2929 --> 2533 bytes (13.52%), optimized.
Average compression (1636 files): 48.48% (10643k)



** Processing: ./selector-arrow.png
13x10 pixels, 4 bits/pixel, 16 colors (1 transparent) in palette
Input IDAT size = 81 bytes
Input file size = 211 bytes

Trying:
  zc = 9  zm = 9  zs = 0  f = 0		IDAT size = 68
  zc = 9  zm = 8  zs = 0  f = 0		IDAT size = 68
  zc = 8  zm = 9  zs = 0  f = 0		IDAT size = 68
  zc = 8  zm = 8  zs = 0  f = 0		IDAT size = 68
  zc = 7  zm = 9  zs = 0  f = 0		IDAT size = 68
  zc = 7  zm = 8  zs = 0  f = 0		IDAT size = 68
  zc = 6  zm = 9  zs = 0  f = 0		IDAT size = 68
  zc = 6  zm = 8  zs = 0  f = 0		IDAT size = 68
  zc = 5  zm = 9  zs = 0  f = 0		IDAT size = 68
  zc = 5  zm = 8  zs = 0  f = 0		IDAT size = 68
  zc = 4  zm = 9  zs = 0  f = 0		IDAT size = 68
  zc = 4  zm = 8  zs = 0  f = 0		IDAT size = 68
  zc = 3  zm = 9  zs = 0  f = 0		IDAT size = 68
  zc = 3  zm = 8  zs = 0  f = 0		IDAT size = 68
  zc = 3  zm = 9  zs = 1  f = 0		IDAT size = 68
  zc = 3  zm = 8  zs = 1  f = 0		IDAT size = 68
                               
Selecting parameters:
  zc = 3  zm = 8  zs = 1  f = 0		IDAT size = 68

Output IDAT size = 68 bytes (13 bytes decrease)
Output file size = 198 bytes (13 bytes = 6.16% decrease)

VN:F [1.9.22_1171]
Rating: 5.0/5 (1 vote cast)
VN:F [1.9.22_1171]
Rating: +1 (from 1 vote)

htaccess

RewriteEngine On


#Options -Indexes

ErrorDocument 404 /404.php
#RewriteBase /
#RewriteCond %{HTTP_HOST} !^DOMAIN$ [NC]
#RewriteRule ^(.*)$ http://DOMAIN/$1 [L,R=301]

RewriteRule ^css.min/(.*\.css) /m/?f=/css/$1 [NC,L,QSA]
RewriteRule ^js.min/(.*\.js) /m/?f=/js/$1 [NC,L,QSA]

## EXPIRES CACHING ##

ExpiresActive On
ExpiresByType image/jpg "access 1 year"
ExpiresByType image/jpeg "access 1 year"
ExpiresByType image/gif "access 1 year"
ExpiresByType image/png "access 1 year"
ExpiresByType text/css "access 1 month"
ExpiresByType application/pdf "access 1 month"
ExpiresByType application/x-javascript "access 1 month"
ExpiresByType application/x-shockwave-flash "access 1 month"
ExpiresByType image/x-icon "access 1 year"
ExpiresDefault "access 2 days"

## EXPIRES CACHING ##


# Set up caching on media files for 1 year (forever?)
<FilesMatch "\.(flv|ico|pdf|avi|mov|ppt|doc|mp3|wmv|wav)$">
ExpiresDefault A29030400
Header append Cache-Control "public"


# Set up caching on media files for 1 week
<FilesMatch "\.(gif|jpg|jpeg|png|swf)$">
ExpiresDefault A604800
Header append Cache-Control "public"


# Set up 2 Hour caching on commonly updated files
<FilesMatch "\.(xml|txt|html|js|css)$">
ExpiresDefault A9200
Header append Cache-Control "proxy-revalidate"


# Force no caching for dynamic files
<FilesMatch "\.(php|htm)$">
ExpiresActive Off
Header set Cache-Control "private, no-cache, no-store, proxy-revalidate, no-transform"
Header set Pragma "no-cache"



AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE application/rss+xml
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE application/x-javascript

VN:F [1.9.22_1171]
Rating: 5.0/5 (1 vote cast)
VN:F [1.9.22_1171]
Rating: +1 (from 1 vote)

Проблем с Google Page Speed и Facebook "Enable compression"

Проблем с Google Page Speed и Facebook "Enable compression"

Гугъл казва, че трябва да се оптимизират скриптовете от facebook. Супер, но ние нямаме достъп до тях. Ето го и съобщението:

Enable compression
Compressing resources with gzip or deflate can reduce the number of bytes sent over the network.
Enable compression for the following resources to reduce their transfer size by 447KiB (72% reduction).

    Compressing https://static.xx.fbcdn.net/rsrc.php/v2/yn/r/TafFivy4OjC.js could save 132.2KiB (72% reduction).
    Compressing https://static.xx.fbcdn.net/rsrc.php/v2/y0/r/89exU7sq7Ld.css could save 83.2KiB (81% reduction).
    Compressing https://static.xx.fbcdn.net/rsrc.php/v2/y6/r/9tEPef2Xf70.js could save 81.6KiB (72% reduction).
    Compressing https://static.xx.fbcdn.net/rsrc.php/v2/yh/r/Sst4Eu6wCBO.js could save 69.3KiB (70% reduction).
    Compressing https://static.xx.fbcdn.net/rsrc.php/v2/yq/r/EKSe2LvV9st.css could save 29.5KiB (81% reduction).
    Compressing https://static.xx.fbcdn.net/rsrc.php/v2/yg/r/QHf4dqPAsjn.js could save 19.7KiB (68% reduction).
    Compressing http://dobrich24.com/fonts/tiefontello.svg?88026028 could save 15.3KiB (56% reduction).
    Compressing https://static.xx.fbcdn.net/rsrc.php/v2/yG/r/ZvGCpbKPoq8.js could save 11.9KiB (62% reduction).
    Compressing https://static.xx.fbcdn.net/rsrc.php/v2/y2/r/HOF18dCoWFZ.css could save 2.6KiB (67% reduction).
    Compressing https://static.xx.fbcdn.net/rsrc.php/v2/yy/r/Aqy-PT2Uo_S.js could save 1.8KiB (53% reduction).

Решение: Използване на lazyscript -- http://hayageek.com/jquery-lazy-loading-scripts ;)

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script src="http://hayageek.com/examples/jquery/lazy-script/jquery.lazyscript.js" type="text/javascript"></script>

<script>
$(document).ready(function () {
var options = {
type: "delay",
time:1000,
scripts: [
"http://platform.twitter.com/widgets.js",
"http://connect.facebook.net/en_US/all.js#xfbml=1&appId=445577382175430",
"https://apis.google.com/js/plusone.js"
],
success: function () {
FB.init({ status: true, cookie: true, xfbml: true });
}
};
$.lazyscript(options);

});
</script>



<div class="fb-like-box" data-href="http://www.facebook.com/FACEBOOKPAGE" data-width="180" data-show-faces="true" data-stream="false" data-header="false"></div>
VN:F [1.9.22_1171]
Rating: 5.0/5 (1 vote cast)
VN:F [1.9.22_1171]
Rating: +1 (from 1 vote)

За родители с деца преди училище

Днес забелязахме, че на приходната квитанция от детската градина има "адрес за проверка на задължения: http://95.43.154.30/Dobrich_Kids/ "

На адрес http://95.43.154.30/Dobrich_Kids/ може да се проверят следните неща:

1. Детска ясла
1.1. Кога детето е ходило на ясла и какви задължения имат родителите.
1.2. Какво е седмичното меню в детската ясла.

2. Детска градина
2.1. Кога детето е ходило на детска градина и какви задължения имат родителите.
2.2. Какво е седмичното меню в детската градина.

3. Млечна кухня
3.1. Какво е седмичното меню.
3.2. Заверка на купони.

Ето как изглежда системата "Община град Добрич -- Електронни услуги за детски заведения" от вътре:

Виждат се присъствените, както и останалите дни.

spravka-detska-gradina-1

Извод: за 3 месеца сме били 17 дни на детска градина :)

Вижда се седмичното меню на нашата детска градина

spravka-detska-gradina-2

PS: Забравих да споделя кое е най- доброто училище в Добрич -- СУ "Любен Каравелов"

VN:F [1.9.22_1171]
Rating: 5.0/5 (2 votes cast)
VN:F [1.9.22_1171]
Rating: +1 (from 1 vote)

ssh "Connection reset by peer"

Когато се логна към ssh сървър и не правя нищо известно време излиза със съобщението "Connection reset by peer". За да се фиксне това трябва да се променим времето на почивка на сървъра и на клиента.

Фикс на ssh server:

Файл "/etc/ssh/sshd_config"

ClientAliveInterval 540

Фикс на ssh клиент:

Файл "/etc/ssh/ssh_config"

ServerAliveInterval 540

След този фикс ssh конекцията може да бъде работеща 9 минути без да се прави нищо.

VN:F [1.9.22_1171]
Rating: 0.0/5 (0 votes cast)
VN:F [1.9.22_1171]
Rating: 0 (from 0 votes)

Радиата които слушам

Това е списък на радиата които слушам. Има някои които от сайтовете си не предлагат възможност за слушане от външен player, xmms или mplayer. Затова ги парснах и си ги записах тук за да мога да си ги слушам с моите players , а не през web player.




0. Zrock
mpg123 http://193.108.24.6:8000/zrock

mpg123 http://46.10.150.243/z-rock.mp3


1. badrockradio.net
mpg123 http://79.98.108.170:8028/live





2. Radio1rock
mpg123 http://149.13.0.81:80/radio1rock128

3. Techno
mpg123 http://www.radio33.org:8000/

4. Magicfm
mpg123 rtmp://31.13.217.76:1935/rtplive/magicfmradio_live.stream

5. Energy
mpg123 http://149.13.0.81:80/nrj128

6. The voice
mpg123 rtmp://31.13.217.76:1935/rtplive/thevoiceradio_live.stream

7. Dobrudja
mpg123 http://radio.dobrich.net:8000/radiodobrudja

8. Radio1 
mpg123 http://play.global.audio:80/radio164
VN:F [1.9.22_1171]
Rating: 5.0/5 (2 votes cast)
VN:F [1.9.22_1171]
Rating: +1 (from 1 vote)

Vim трик

За коригиране на lineendings на файла, чрез vim

:e ++ff=dos
:e ++ff=mac
:e ++ff=unix
VN:F [1.9.22_1171]
Rating: 5.0/5 (1 vote cast)
VN:F [1.9.22_1171]
Rating: +1 (from 1 vote)

Пресмятане на ДДС

Данни:

Облагаема стойност: 25.34 лв.
ДДС: 5.07 лв.
Обща стойност с ДДС: 30.41 лв.

1. Имаме стойност 30.41 лв. с ДДС и искаме да разберем какво е ддс-то на тази стойност:

Разделяме на 6 и виждаме ддс-то:

30.41 / 6 = 5.07 лв. -- ДДС

2. Имаме стойност 25.34 лв. и искаме да разберем каква е сумата с ДДС
Умножаваме по 1.2 и виждаме сумата с ДДС:

25.34 * 1.2 = 30.41 лв. с ДДС

3. Имаме Стойност 30.41 лв. с ДДС и искаме да разберем каква е сумата без ДДС
Разделяме на 1.2 и виждаме чистата сума без ДДС

30.41 / 1.2 = 25.34 лв. без ДДС

VN:F [1.9.22_1171]
Rating: 5.0/5 (2 votes cast)
VN:F [1.9.22_1171]
Rating: +3 (from 3 votes)

Бележки при конвертиране на бази/файлове -- cp1251,utf8,latin1 и т.н.

1. При дъмпване на файл използвам аргумента --extended-insert=FALSE, чрез които не се обединява всички insert-и, а ги разбива на ред по ред. Идеята е, че ако има проблеми да можем лесно да открием и фикснем проблема.
т.е.:
mysqldump --extended-insert=FALSE -uUSER -pPASS DB > db.sql

2. При конвертиране с iconv виждаме следната грешка:

iconv: illegal input sequence at position 23945

за да открием точно къде е проблема отварям файла с vim

и с goto:

:goto 23945

и така откриваме проблема веднага.

3. Фиксване на Utf8 таблица с cp1251 съдържание.

cat 1.sql | iconv -f utf-8 -t latin1//TRANSLIT > 2.sql
cat 2.sql | iconv -f cp1251 -t utf-8 > final.sql;

VN:F [1.9.22_1171]
Rating: 5.0/5 (1 vote cast)
VN:F [1.9.22_1171]
Rating: +1 (from 1 vote)