NeoXidizer
User-
Posts
372 -
Joined
-
Last visited
-
Days Won
5
Content Type
Profiles
Forums
Calendar
Store
Everything posted by NeoXidizer
-
for(@modes), аналог в PHP - foreach? или ($i = 0, $count = count($modes); $i < $count; ++$i)
-
да, с этим разобрался еще вопрос: Perl print "————————————-"; my @txt = split /\n/, $txt; #print "\nВХОД: $txt ///\n"; my @txt = sort { print "\n a - $a\nb - $b\n"; "$a\n$b" =~ /: *(\d+) .* (\d);\n.*: *(\d+) .* (\d);/ or die; !$3 <=> !$1 or $4 <=> $2 or $a cmp $b; } @txt; print "————————————-";PHP: function cmp($a, $ { if ($a == $ return 0; return ($a < $ ? -1 : 1; } $txt = explode("\n", trim($txt)); usort($txt, function($a, $ { preg_match("/: *(\d+) .* (\d);\n.*: *(\d+) .* (\d);/", "$a\n$b", $matches) or die("a - $a, b - $b"); print "a - " . $a . "\n"; print "b - " . $b . "\n"; return cmp(!$matches[3], !$matches[1]) || cmp($matches[4], $matches[2]) || strcmp($a, $; } ); print_r($txt); на вход в сортировку идет: (проверял как в PHP, так и в Perl) 0: 0 0 0 9; 0: 1 8 0 0; 0: 9 63 0 0; Вывод в Perl: ———————————— a - 0: 0 0 0 9; b - 0: 1 8 0 0; a - 0: 0 0 0 9; b - 0: 9 63 0 0; a - 0: 9 63 0 0; b - 0: 1 8 0 0; ————————————-вывод в PHP: a - 0: 1 8 0 0; b - 0: 0 0 0 9; a - 0: 9 63 0 0; b - 0: 1 8 0 0; ———————————— добавил для достоверности, что сортировка запускается лишь раз, а не в процессе цикла почему в perl скрипте $a и $b - больше значений? разные алгоритмы сортировки? и правильно ли я написал return у function c? вроде все работает, спрашиваю для саморазвития
-
sub canonize { my $txt = $prefix.$suffix.shift; print "\n prefix - $prefix \n suffix - $suffix \n"; } sub try { my $txt = canonize(shift); } sub triesn { ... for(@modes) { my $s = try($_); ... } my $refine = triesn(1, @modes); строка: my $txt = $prefix.$suffix.shift; почему shift применяется два раза?, еще в строке у my $txt = canonize(shift);
-
не забывай, что браузеры любят устанавливать свои стили, которые не описаны в твое ссылке вот лучшим способ сброса на дефолт во всех браузерах, на сколько это возможно https://github.com/necolas/normalize.css/blob/master/normalize.css
-
спасибо, потихоньку продвигаюсь, насколько работа sprintf в перле соотвествует sprintf в PHP? и что означает $|=1;в самом начале?
-
программа IETester была сделана из-за невозможности одновременной установки IE6-IE9 остальные браузеры это позволяют, поэтому можете просто устанавливать нужную версию в отдельную папку. либо можно воспользоваться сервисами, которые позволяют делать скриншоты с нужного браузера (естественно, javascript не потестируешь) я пользуюсь http://browserlab.adobe.com/ требуется иметь Adobe ID (тобишь зарегестрироваться, бесплатно) но браузеров там очень мало (IE6-9, Firefox 11 Win/Mac, Chrome 18, Safari 5.1 Mac)
-
Как можно изменить высоту левого блока от результата высоты правого блока?
NeoXidizer replied to Krava's question in HTML Coding
я бы сделал так http://jsfiddle.net/p7Sz2/ -
li:hover li:hover::before
-
http://jsfiddle.net/JV37k/
-
практикуюсь в портировании standalone приложений в веб сервисы, имеется следующий perl скрипт: #!/usr/bin/perl -ws # jpegrescan by Loren Merritt # Last updated: 2008-11-29 / 2011-11-01 # This code is public domain. use File::Slurp; @ARGV==2 or die "usage: jpegrescan in.jpg out.jpg\ntries various progressive scan orders\n"; $fin = $ARGV[0]; $fout = $ARGV[1]; $ftmp = "$fout-$$.scan"; $jtmp = $fout; $verbose = $v; $quiet = $q; undef $_ for $v,$q; undef $/; $|=1; # convert the input to baseline, just to make all the other conversions faster # FIXME there's still a bunch of redundant computation in separate calls to jpegtran open $OLDERR, ">&", STDERR; open STDERR, ">", $ftmp; open TRAN, "-|", "./jpegtran", "-v", "-optimize", $fin or die; write_file($jtmp, <TRAN>); close TRAN; open STDERR, ">&", $OLDERR; $type = read_file($ftmp); $type =~ /components=(\d+)/ or die; $rgb = $1==3 ? 1 : $1==1 ? 0 : die "not RGB nor gray\n"; # FIXME optimize order for either progressive transfer or decoding speed sub canonize { my $txt = $prefix.$suffix.shift; $txt =~ s/\s*;\s*/;\n/g; $txt =~ s/^\s*//; $txt =~ s/ +/ /g; $txt =~ s/: (\d+) (\d+)/sprintf ": %2d %2d", $1, $2/ge; # treat u and v identically. I shouldn't need to do this, but with jpegtran overhead it saves 9% speed. cost: .008% bitrate. $txt =~ s/^2:.*\n//gm; $txt =~ s/^1:(.+)\n/1:$1\n2:$1\n/gm; # dc before ac, coarse before fine my @txt = sort {"$a\n$b" =~ /: *(\d+) .* (\d);\n.*: *(\d+) .* (\d);/ or die; !$3 <=> !$1 or $4 <=> $2 or $a cmp $b;} split /\n/, $txt; return join "\n", @txt; } sub try { my $txt = canonize(shift); return $memo{$txt} if $memo{$txt}; write_file($ftmp, $txt); open TRAN, "-|", "./jpegtran", "-scans", $ftmp, $jtmp or die; $data = <TRAN>; close TRAN; my $s = length $data; $s or die; $memo{$txt} = $s; !$quiet && print $verbose ? "$txt\n$s\n\n" : "."; return $s; } sub triesn { my($bmode, $bsize); my ($limit, @modes) = @_; my $overshoot = 0; for(@modes) { my $s = try($_); if(!$bsize || $s < $bsize) { $bsize = $s; $bmode = $_; $overshoot = 0; } elsif(++$overshoot >= $limit) { last; } } return $bmode; } sub tries { triesn(99, @_); } $prefix = ""; $suffix = ""; if($rgb) { # 012 helps very little # 0/12 and 0/1/2 are pretty evenly matched in frequency, but 0/12 wins in total size if every image had to use the same mode # dc refinement passes never help $dc = tries("0: 0 0 0 0; 1 2: 0 0 0 0;", "0: 0 0 0 0; 1: 0 0 0 0; 2: 0 0 0 0;"); # jpegtran won't let me omit dc entirely, but I can at least quantize it away to make the rest of the tests faster. $prefix = "0 1 2: 0 0 0 9;"; } else { $dc = "0: 0 0 0 0;"; $prefix = "0: 0 0 0 9;"; } # luma can make use of up to 3 refinement passes. # chroma can make use of up to 2 refinement passes. # refinement passes have some chance of being split (luma: 4%,4%,4%. chroma: 20%,8%) but the total bit gain is negligible. # msb pass should almost always be split (luma: 87%, chroma: 81%). # I have no theoretical reason for this list of split positions, they're just the most common in practice. # splitting into 3 ections is often slightly better, but the total number of bits saved is negligible. # FIXME: penalize lots of refinement passes because it's slower to decode. if so, then also force overwrite if bigger than the input. sub try_splits { my $str = shift; my %n = map {$_ => sprintf "$c: 1 %d $str; $c: %d 63 $str;", $_, $_+1} 2,5,8,12,18; my $mode = triesn(2, "$c: 1 63 $str;", @n{2,8,5}); return $mode if $mode ne $n{8}; return triesn(1, $mode, @n{12,18}); } foreach $c (0..$rgb) { my @modes; my $ml = ""; for(0..($c?2:3)) { push @modes, "$c: 1 8 0 $_; $c: 9 63 0 $_;".$ml; $ml .= sprintf("$c: 1 63 %d %d;", $_+1, $_); } my $refine = triesn(1, @modes); $refine =~ s/.* (0 \d);//; $ac .= $refine . try_splits($1); } $prefix = ""; undef %memo; $mode = canonize($dc.$ac); try($mode); $size = $memo{$mode}; !$quiet && print "\n$mode\n$size\n"; $old_size = -s $fin; if($size < $old_size) { write_file($fout, $data); } unlink $ftmp; за незнанием синтаксиса Perl'а, прошу помочь составить алгоритм, которому следует данный скрипт, если этот скрипт вообще возможно повторить на PHP Вкратце - скрипт принимает в качестве входных аргументов [путь_к_программе] [входной_jpeg_файл] [выходной_файл] и ищет оптимальный способ оптимизации (параметров для запуска программы из аргумента[0] Лишний код, типа перенаправление потоков STDERR (и других) можно пропускать либо помочь сделать так, чтобы вывод не блокировался, и был виден весь прогресс работы Мой набросок: Объявление переменных #Комментарий - конвертирование файла в baseline, чтобы ускорить все остальные конвертации jpegtran -v -optimize $file объявление $type, не знаю, что это, скорее всего определения формата - baseline или progressive объявление $rgb - цветового пространства (color space), проверяет, является ли формат файла RGB, либо BW, CMYK не пропускает #FIXME sub canonize, месиво из регулярок(help) sub try, запуск jpegtran с параметром -scans file sub triesn, не понять sub tries { triesn(99, @_); } - ? if($rgb) { какая-то магия, очевидно запуск функции tries с заданными параметрами $dc = tries("0: 0 0 0 0; 1 2: 0 0 0 0;", "0: 0 0 0 0; 1: 0 0 0 0; 2: 0 0 0 0;"); } else не интересует # комментарий # с упоминанием # о дальнейшей работе с битами не понятный мне кодПредпологаю, что поняв смысл всего этого месева из работы с битами и регулярками, можно написать легкий код на PHP (благо есть встроенные функции для вычисления color space, mode, etc сильно может помочь это http://www.cs.wcupa.edu/~rkline/perl2php/ либо, если кто-то найдет онлайн трянслятор, буду благодарен, даже если будет на половину не рабочим
-
приводите весь файл
-
[добавьте кнопку удалить сообщение]
-
вот конечный кодif (!isset($_COOKIE['visit'])) { $filename = 'text.txt'; if (file_exists($filename)) { $handle = fopen($filename, "r"); $counter = (int)fgets($handle); fclose($handle); $handle = fopen($filename, "w"); fputs($handle, ++$counter); // записываем в файл текущее значение счетчика +1 fclose($handle); } else { $handle = fopen($filename, "w+"); if (!$handle) die('Файл невозможно создать'); fputs($handle, "1"); // Если файла изначально не существует, создаем его с содержимым "1" fclose($handle); } setcookie("visit"); }а еще можно так if (!isset($_COOKIE['visit'])) { $filename = 'texts.txt'; if (file_exists($filename)) { $counter = (int)file_get_contents($filename); file_put_contents($filename, ++$counter); } else file_put_contents($filename, "1"); setcookie("visit"); }или даже так if (!isset($_COOKIE['visit'])) { $filename = 'texts.txt'; if (file_exists($filename)) file_put_contents($filename, (int)file_get_contents($filename)+1); else file_put_contents($filename, "1"); setcookie("visit"); }
-
правила http://www.study.ru/lessons/ + http://www.anglais.ru/anglijskaya-grammatika/ словарь http://lingualeo.ru/
-
http://ru2.php.net/manual/ru/book.filesystem.php вам нужны fopen, fgets, fputs, fclose Находите функцию, читаете описание и смотрите примеры если владеете английским, то читаете комментарии либо http://ru2.php.net/manual/ru/function.file-get-contents.php http://ru2.php.net/manual/ru/function.file-put-contents.php
-
нельзя так объявлять переменную в процедурном коде. Выведет Undefined variable: all. Нужно всегда указывать начальное значение, например null, 0, и т.д. Я бы сделал алгоритм следующим: Проверяем, есть ли у пользователя кука Если нет, то создаем куку, которая хранится до закрытия браузера Увеличиваем в базе данных текущее значение счетчика на 1 базой данных может быть как и база в СУБД, так и простым текстовым файлом, на ваш выбор тобишь как-то так: if (!isset($_COOKIE['visit'])) { открываем файл получаем из него текущее значение счетчика увеличиваем значение счетчика на 1 записываем результат закрываем файл } else { устанавливаем куку, которая живет лишь текущую сессию. }
-
эм.. rus, чего здесь гадать то? Warning: Cannot modify header information - headers already sent by (output started at Z:\home\test1.ru\www\dark\index.php:10) in Z:\home\test1.ru\www\dark\index.php on line 14 заголовки были отосланы, так как output started at Z:\home\test1.ru\www\dark\index.php:10
-
перед отправкой заголовков (функция headers) в выводе не должно быть никаких символов. Проверьте на наличие случайного пробела и т.п.
-
если не изменяет память (дримвивер не использую), там можно редактировать шаблон, по которому создается документ, просто исправьте его один раз. запомните - id можно использовать только один раз на всю страницу. Тобишь нельзя делать так: <div id="black"></div> <div id="white"></div> <div id="black"></div>CSS на это все равно, а JavaScript будет работать только с первым попавшимся на странице элементом с ID. Поэтому, лучше не используйте id до тех пор, пока не начнете использовать скрипты. А затем разберетесь, что к чему Затем: 1. Не используйте заглавные буквы в коде: не верно: BODY { font-family:"Tahoma"; background-color:#FFFFFF; } A, A:link, A:hover{ color:#FFFFFF; font-size:11px; font-weight:bold; font-family:"Tahoma"; text-decoration:none; }верно: body { font-family:"Tahoma"; background:#fff; } a, a:link, a:hover{ color:#fff; font:700 11px "Tahoma"; text-decoration:none; } 2. Не используйте глобальный селектор *, это влияет на производительность * {padding:0;margin:0;}Лучше просто перечислить используемые элементы, их не так уж и много. 3. Обращайтесь к элементам напрямую, когда это возможно #head #menu .menu_btn{} #head #menu .menu_btn A{}= .menu_btn{} .menu_btn A{} 4. Будьте внимательней: #left_col{ width:175px; float:left; border-right:1px solid #DCDCDC; } #right_col{ width:314px; float:left; } #left_col,#right_col{ margin-top:10px; padding:0px 15px 10px 15px; }float:left так-же можно было перенести, а px у 0 не писать
-
либо не искал вообще, либо искал 2 секунды, а потом ушел на форум... готовых решений ТЫСЯЧА
-
кому адресовано сообщение? чего именно нет? а кто написал тут про: application/x-httpd-php ? почему считаете не корректным - обоснуйте? А здесь кто-то кроме меня, вас, и топик стартера с 2 сообщениями что-то написал? Нет? Тогда что за тупой вопрос, кому адресовано сообщение >__< Согласно данному источнику, http://mimeapplication.net/type-list-44, а так же иным многочисленным источникам из интернета, mime-типа application/x-httpd (даже подправив вашу опечатку с одной l в слове Application) - не существует, вот чего нет. Про application/x-httpd-php ничего не говорилось, но вы написали про application/x-httpd, которого не существует, а самый ближайший вариант - application/x-httpd-php, а обрабатывать файл, который нужно отдать, как это тип - тупость
-
Получение результата вычесления php из формы через AJAX
NeoXidizer replied to nartan's question in JavaScript
может не самое элегантное решение, но думаю, идею вы поняли <?php $errors = array(); $cityfrom = $_POST['cityfrom']; $sityto = $_POST['sityto']; // Вес, включая десятичные значения, например 0.5 if ((float)$_POST['ves'] > 0) $ves = (float)$_POST['ves']; else $errors[] = 'Введите вес'; // Объем, включая десятичные значения, например 0.5 if ((float))$_POST['vol'] > 0) $vol = (float)$_POST['vol']; else $errors[] = 'Введите объем'; // Страхование $ins = (isset($_POST['ins']) ? 1 : 0); // Стоимость груза при страховании if ($ins && (float)$_POST['price'] <= 0) $errors[] = 'Введите цену'; else $price = $_POST['price']; // Вывод ошибок if ($errors) { foreach ($errors as $key => $error) echo $error."<br/>\n"; die(); } И нужно указать посетителям, в каком формате указывать цену при страховке, ведь можно написать "1,000", "10 тыс". "сто рублей" и т.д. при том, что по вашей задумке, посетитель должен ввести (предположим) "10 000" -
http://mimeapplication.net/type-list-44 такого даже нет... а отдавать файл как application/x-httpd-php, как это советуют на некоторых форумах, я не считаю корректным
-
Получение результата вычесления php из формы через AJAX
NeoXidizer replied to nartan's question in JavaScript
к слову, лучше как-то так: <script src="http://code.jquery.com/jquery-1.7.2.min.js"></script> <form action="calc.php" method="post" id="Calculating" > <p> <label for="cityfrom">Город отправитель:</label> <select name="cityfrom" > <option value="1" selected>Москва</option> <option value="2">Ростов-на-Дону</option> </select> </p> <p> <label for="sityto">Город получатель:</label> <select name="sityto" > <option value="1" selected>Москва</option> <option value="2">Ростов-на-Дону</option> </select> </p> <p> <label for="ves">Вес груз, кг:</label> <input type="text" name="ves" value=""> </p> <p> <label for="vol">Объем, м3:</label> <input type="text" name="vol" value=""> </p> <p> <label for="ins">Дополнительное страхование:</label> <input type="checkbox" name="ins" > </p> <p> <label for="price">Стоимость груза, руб.:</label> <input type="text" name="price" value=""> </p> <input type="button" onclick="send();" value="Отправить" /> <div id="result"></div> </form> <script> function send() { $.ajax({ type: "POST", url: "calc.php", data: $('#Calculating').serialize(), // Выводим то что вернул PHP success: function(html) { $("#result").html(html); } }); } </script> <?php // Здесь дополнительная проверка на вводимые значения, включая оповещение, если пользователь ничего не ввел $cityfrom = $_POST['cityfrom']; $sityto = $_POST['sityto']; $ves = (int)$_POST['ves']; $vol = (int)$_POST['vol']; $ins = (isset($_POST['ins']) ? 1 : 0); $price = (int)$_POST['price']; $marshrut = $cityfrom . $sityto; // Насчет проверки... если $ves == 0 (пользователь не ввел), то событие пройдет if ($marshrut==11 || $marshrut==12) if ( $ves<=100 ) $ves*=6.21; elseif ( $ves<=200 && $ves>100 ) $ves*=6.1; elseif ( $ves<=300 && $ves>200 ) $ves*=5.99; elseif ( $ves<=400 && $ves>300 ) $ves*=5.9; elseif ( $ves<=500 && $ves>400 ) $ves*=5.88; elseif ( $ves<=700 && $ves>500 ) $ves*=5.66; elseif ( $ves<=1000 && $ves>700 ) $ves*=5.55; elseif ( $ves<=1500 && $ves>1000 ) $ves*=5.35; elseif ( $ves<=2000 && $ves>1500 ) $ves*=5.12; elseif ( $ves<=2500 && $ves>2000 ) $ves*=5.02; elseif ( $ves<=3000 && $ves>2500 ) $ves*=4.91; else $ves*=4.79; else exit("Маршрут отсутствует!"); $vol *= 220; $price_end = (($vol>$ves) ? $vol : $ves); if ($ins) $price_end = $price * 0.45 + $price_end; exit("Стоимость перевозки $price_end рублей"); код полегчал, обрабатывать легче, все работает