• Ключевая роль Linux в поиске бозона Хиггса
    +1
    Кто-то просто набрался смеслости поделится результатом. А вбили больше, но молчат ))
  • Ключевая роль Linux в поиске бозона Хиггса
    +23
    Браво! Ещё одно прекрасное доказателство, что Linux служит человечеству, а не средством набивания карманов отдельных особей.
  • О чудесах
    +2
    И статья хорошая, но и пиар своих ссылок тоже неплох ) ) )
  • Досмотр файлов на украинской границе: личный опыт
    0
    Вам совершенно верно привели пример с ПДД. Я 10 лет занимался адвокатской деятельностью и на практике встречал массу подобных примеров в любой стране. Россия никогда никаких решений за другие страны не принимает и не имеет права принимать. Сообщения в СМИ и реальная юриспруденция — совершенно разные вещи. Единственное, что Россия может сделать, это если в случае уголовного преступления вас арестуют, попросить выдать вас, чтобы судить по своим законам, но только в обмен на какие-то блага для той страны, которую Россия будет просить.
  • Досмотр файлов на украинской границе: личный опыт
    +2
    Нет, нет. Вы ошибаетесь. Это международный стандарт. В каждом кодексе и украинском, и российском — гражданском, уголовном и проч. в качестве лиц, на которые распространяется юрисдикция кодекса, указаны граждане, иностранцы и лица без гражданства. При совершении правонарушения вас будут наказывать и применять меры в соответствии с тем законом который действует на территории страны где вы находитесь. В Украине в тюрьмах сидит достаточное количество российских граждан, так же как и в России — украинских. Вас сбивает с толку многочисленные сообщения в прессе об экстрадиции, но, поверьте, если вы не видный политик, не дипломат и не очень крупный бизнесмен, вас она не коснется )))
  • Досмотр файлов на украинской границе: личный опыт
    +1
    Мы обязаны руководствоваться конституцией той страны, в которой находимся. З/Ы — в Тайланде — Тайской )))
  • Вышла новая версия комплекта для рабочих станций и домашних компьютеров — Ubuntu DesktopPack 10.04.1
    0
    Имхо, пункт про «установку Ubuntu Linux и приложений на компьютере, который не имеет подключения к Интернет» стоило бы поставить первым. Это одна из самых важных характеристик данного комплекта.
  • Новый дизайн Flickr
    +7
    Когда смотришь на верхний снимок, где заголовок жирный и сверху, то прежде всего осознаёшь его, а потом только рассматриваешь фото. На нижнем же снимке, сначала воспринимаешь фото, а только потом осмысливаешь заголовок. На первый взгляд кажется неудобно, но зато воспринимать фото ничего не мешает. Хотя, конечно, это индивидуально.
  • Обама призывает американцев помочь в кибер-безопасности
    0
    Это надо попросить Обаму. Его список. ))
  • Откуда берутся посредственные сайты?
    0
    Что-то Вы не так поняли. Вопрос был: «Откуда в русском интернете столько плохих сайтов?» А разговор почему-то идет только о студиях, да о фрилансерах. А сколько в инете сайтов сделанных просто «Васями», «Колями» и т. д. но гордо подписанных, якобы это супер студия? Или, введите, к примеру, слово «археология» в гугле. И что Вы увидите? На первом месте убогий сайт, автор которого, вообще не скрывает радости от того, что сделал его сам. Не будем говорить о дешевых приемах, благодаря которым он попал на первое место, лучше задуматься, какой на самом деле процент сайтов, сделанных действительно студиями и фрилансерами, а не народными умельцами?
  • Откуда берутся посредственные сайты?
    +3
    К сожалению, сайты делают не только студии…
  • Комментарий из публикации, перенесённой в черновики.
  • Как использовать пространства имён в PHP, Часть 3: Ключевые слова и автозагрузка
    +1
    Спасибо! Но «на подобии» — написано не мной, это, если обратите внимание, цитата из аналогичного перевода. Кроме того там еще и грубая ошибка в программировании…

    Вопрос первый: Действие пространства имён распространяется на весь файл. Если же хотите ограничить его, можно сделать так:
      1. <?php
      2. namespace MyProject {
      3. 
      4. const CONNECT_OK = 1;
      5. class Connection { /* ... */ }
      6. function connect() { /* ... */ }
      7. }
      8. 
      9. namespace { // global code
     10. session_start();
     11. $a = MyProject\connect();
     12. echo MyProject\Connection::start();
     13. }
     14. ?>


    * This source code was highlighted with Source Code Highlighter.

    А если пожелаете определить два и более, то так:
      1. <?php
      2. namespace MyProject {
      3. 
      4. const CONNECT_OK = 1;
      5. class Connection { /* ... */ }
      6. function connect() { /* ... */ }
      7. }
      8. 
      9. namespace AnotherProject {
     10. 
     11. const CONNECT_OK = 1;
     12. class Connection { /* ... */ }
     13. function connect() { /* ... */ }
     14. }
     15. ?>


    * This source code was highlighted with Source Code Highlighter.


    Вопрос второй. Что непонятно, смотри на примерах:

    Пример 1.

    file1.php
    <?php
    namespace my\stuff;
    class MyClass {}
    ?>

    another.php
    <?php
    namespace another;
    class thing {}
    ?>

    file2.php
    <?php
    namespace my\stuff;
    include 'file1.php';
    include 'another.php';

    use another\thing as MyClass;
    $a = new MyClass; // instantiates class "thing" from namespace another
    ?>

    В данном случае не будет конфликта имён, даже не смотря на то, что класс MyClass существует в пределах пространства имён my\stuff, так как описание MyClass находится в отдельном файле. Импорт имён не конфликтует с классами, определёнными в этом же файле.

    Пример 2.

    file1.php
    <?php
    namespace Foo\Bar\subnamespace;

    const FOO = 1;
    function foo() {}
    class foo
    {
      static function staticmethod() {}
    }
    ?>

    file2.php
    <?php
    namespace Foo\Bar;
    include 'file1.php';

    const FOO = 2;
    function foo() {}
    class foo
    {
      static function staticmethod() {}
    }

    /* Неквалифицированное имя */
    foo(); // разрешается в функцию Foo\Bar\foo
    foo::staticmethod(); // разрешается в класс Foo\Bar\foo, метод staticmethod
    echo FOO; // разрешается в константу Foo\Bar\FOO

    /* Квалифицированное имя */
    subnamespace\foo(); // разрешается в функцию Foo\Bar\subnamespace\foo
    subnamespace\foo::staticmethod(); // разрешается в класс Foo\Bar\subnamespace\foo,
                     // метод staticmethod
    echo subnamespace\FOO; // разрешается в константу Foo\Bar\subnamespace\FOO
                     
    /* Полное квалифицированное имя */
    \Foo\Bar\foo(); // разрешается в функцию Foo\Bar\foo
    \Foo\Bar\foo::staticmethod(); // разрешается в класс Foo\Bar\foo, method staticmethod
    echo \Foo\Bar\FOO; // разрешается в константу Foo\Bar\FOO
    ?>
  • Как использовать пространства имён в PHP, Часть 3: Ключевые слова и автозагрузка
    0
    Хочу немного дополнить по функции __autoload. Она позволяет нам пользоваться классами, не включая их код явно. Она имеет смыл в контексте объектно-ориентированного программирования. Её основное отличие в том, что она не является частью определения класса, а добавляется в программу как обычная процедурная функция. Например, вместо:
    1. require "MySQLResult.php";
    2. require "MySQLConnect.php";
    3. require "PageNavigator.php";
    4. require "Directory Items.php";
    5. require "Documenter.php";

    Можно легко записать:
    1. function __autoload ($class) {
    2.     require $class ".php";
    3. }

    Функция __autoload вызывается при попытке использовать класс, который не был включен явно. В качестве аргумента ей передается имя класса, который можно включить, сконструировав имя соответствующего файла. Конечно, для такого использования __autoload файл, содержащий определение класса, должен находиться в текущем каталоге или в одном из каталогов, указанных в списке путей для require.
  • Как использовать пространства имён в PHP, Часть 3: Ключевые слова и автозагрузка
    +1
    Спасибо и Вам! Буду трудиться дальше! :-)
  • Как использовать пространства имён в PHP, Часть 2: импортирование, псевдонимы и правила разбора имён
    0
    Как Вы полагаете, имели Zeev Suraski и Andi Gutmans возможность предвидеть подобное развитие языка?
  • Как использовать пространства имен в PHP, Часть 1: Основы
    0
    А что, идея однако! ;-) Надо бы автору написать, еще напишет!
  • Как использовать пространства имен в PHP, Часть 1: Основы
    0
    Оказывается, правильно будет:

    Fully-qualified name — полное квалифицированное имя

    Qualified name — квалифицированное имя

    Unqualified name — неквалифицированное имя
  • Как использовать пространства имен в PHP, Часть 1: Основы
    0
    Не жаль… :-) Вы не обратили внимания, что это не одна статья, там три части. Во второй, которую я опубликую завтра утром, как раз идет речь и о use и о MyFunction.
  • Как использовать пространства имен в PHP, Часть 1: Основы
    0
    Здорово! Это я ошибся… Ты прав!
  • Как использовать пространства имен в PHP, Часть 1: Основы
    0
    Поверьте, в Ваших знаниях не сомневался. Решил детально расписать, поскольку уверен, что статью будут читать в том числе и начинающие, и именно разжевывание может им пригодиться.

    Комментарии не обрабатываются компилятором и никак не влияют на программу, а только служат подсказкой и памяткой… Они имеют другой «вес», чем даже тот же пробел. Это даже не исключение.
  • Как использовать пространства имен в PHP, Часть 1: Основы
    0
    Значит, если займетесь серверным программированием, у Вас еще все впереди :-)
  • Как использовать пространства имен в PHP, Часть 1: Основы
    +1
    Согласен с Вами, уже изменил. Да пребудет с Вами положительная Карма!
  • Как использовать пространства имен в PHP, Часть 1: Основы
    +4
    Вы не зря обратили внимание, но и я не ошибся в переводе. Тут есть такая заковырка. Полагаю, высшей инстанцией в данном вопросе можно считать официальный PHP Manual. К нашей проблеме имеют отношение две страницы: Defining namespaces и Defining multiple namespaces in the same file.

    Если, позволите, обойдемся без цитат — объясню своими словами.

    1. Мы имеем четкое правило, что если мы вообще используем, хотя бы раз, в документе namespace, то мы обязаны поместить его в самое начало кода, даже перед комментариями и пробелом. Единственным позволенным исключением, является только declare.
    1. <?php
    2. namespace MyProject;
    3.  
    4. const CONNECT_OK = 1;
    5. class Connection { /* ... */ }
    6. function connect() { /* ... */ }
    7.  
    8. ?>
    * This source code was highlighted with Source Code Highlighter.

    !!! Даже это уже является ошибкой —
    1. <html>
    2. <?php
    3. namespace MyProject; // fatal error - namespace must be the first statement in the script
    4. ?>
    * This source code was highlighted with Source Code Highlighter.

    2. Если мы хотим применить к одной части нашего кода namespace, а другую оставить не помеченной, мы обязаны разместить помеченную часть в начале нашего кода (таки руководствуясь вышеизложенным пунктом 1.), а вторую специально отметить, пример:
    1. <?php
    2. namespace MyProject {
    3.  
    4. const CONNECT_OK = 1;
    5. class Connection { /* ... */ }
    6. function connect() { /* ... */ }
    7. }
    8.  
    9. namespace { // global code
    10. session_start();
    11. $a = MyProject\connect();
    12. echo MyProject\Connection::start();
    13. }
    14. ?>
    * This source code was highlighted with Source Code Highlighter.

    3. Ну и если мы, хоть это и не рекомендуется, желаем пометить две части нашего кода (или более) разными namespaces, это можно сделать двумя вариантами. Нежелательным и боле-менее приемлимым.

    а) нежелательно, но валидно:
    1. <?php
    2. namespace MyProject;
    3.  
    4. const CONNECT_OK = 1;
    5. class Connection { /* ... */ }
    6. function connect() { /* ... */ }
    7.  
    8. namespace AnotherProject;
    9.  
    10. const CONNECT_OK = 1;
    11. class Connection { /* ... */ }
    12. function connect() { /* ... */ }
    13. ?>
    * This source code was highlighted with Source Code Highlighter.

    а) желательно и валидно:
    1. <?php
    2. namespace MyProject {
    3.  
    4. const CONNECT_OK = 1;
    5. class Connection { /* ... */ }
    6. function connect() { /* ... */ }
    7. }
    8.  
    9. namespace AnotherProject {
    10.  
    11. const CONNECT_OK = 1;
    12. class Connection { /* ... */ }
    13. function connect() { /* ... */ }
    14. }
    15. ?>
    * This source code was highlighted with Source Code Highlighter.

    Итак, namespace обязан быть самой первой командой в файле, но после него можно остальные указывать и в произвольных местах.
  • Как использовать пространства имен в PHP, Часть 1: Основы
    +2
    На днях опубликую еще два перевода статей этого же автора — 2-ую и 3-ю часть.
  • Как использовать пространства имен в PHP, Часть 1: Основы
    0
    Верно! Вот во избежание этого автор и взывает:
    будьте благоразумны, определяя только одно пространство имен для каждого файла...
  • Как использовать пространства имен в PHP, Часть 1: Основы
    +1
    Очень верно заметили. Ничего, на ошибках учатся, хотя я даже думал подчеркнуть этот «лишний» слэш :-)))
  • Как использовать пространства имен в PHP, Часть 1: Основы
    +2
    Именно!
    Любая прямая ссылка на MYCONST, MyFunction или MyClass вызовет сбой, поскольку они существуют только в пространстве имен App\Lib1

    То есть:
    echo \App\Lib1\MyFunction()

    И не иначе :-)
  • Как использовать пространства имен в PHP, Часть 1: Основы
    0
    !!! Прошу прощения, ответил ниже…
  • Как использовать пространства имен в PHP, Часть 1: Основы
    +1
    Если я правильно понял Вас, то могу выразится иначе — используя пространство имен, мы гарантируем существование наших библиотек (моего кода и стороннего) в абсолютно разных пространствах, что означает — вообще никто никого затирать не будет.
  • Вы занимаетесь вёрсткой web-страниц, яваскриптом и пр. Как бы вы хотели, чтобы люди вас называли?
    +1
    Хорошо, таки термин вспомнили… Я как раз и пожалел, что этого термина в опросе не было. И хоть я проголосовал за «html-верстальщик», но когда вопрос касается о перечисленных Вами обязанностях, всегда отвечаю — «web-мастер».
    P. S. Хороший опрос. Жаль что минусуют.
  • CSS3: Во веки веков!
    +1
    Ага! Как Вам, к примеру, такой ужас:

    body {

    background-image: url('bg-image-1.jpg');

    background-size: 100% 100%;

    -moz-background-size: 100% 100%;            /* Gecko 1.9.2 (Firefox 3.6) */

    -o-background-size: 100% 100%;              /* Opera 9.5 */

    -webkit-background-size: 100% 100%;         /* Safari 3.0 */

    -khtml-background-size: 100% 100%;          /* Konqueror 3.5.4 */

    -moz-border-image: url('bg-image-1.jpg') 0; /* Gecko 1.9.1 (Firefox 3.5) */

    }
  • CSS3: Во веки веков!
    0
    Можно. Но нет еще окончательного решения. Тут очень много заморочек с разными браузерами, вот один из вариантов:

    Это код последнего абзаца, его можно видеть на картинке ниже:

    p {

    background-color: transparent;

    background-image: -moz-linear-gradient(top left, bottom left, from(rgba(255,255,255,0.9)), to(rgba(255,255,255,0)));

    background-image: -webkit-gradient(linear, left top, left bottom, from(rgba(255,255,255,0.9)), to(rgba(255,255,255,0)));

    }

  • CSS3: Во веки веков!
    0
    Вы правы. Наверняка найдется достаточно много сайтов, где можно будет применить данное свойство. Мне показался тоже этот абзац каким-то мутным. Я даже хотел его сократить, но поколебавшись, таки оставил ради максимальной точности и полноты перевода статьи.
  • CSS3: Во веки веков!
    0
    Верно, верно! Но, Хабр читают не только хабралюди, он доступен свободно всему Инету, мало ли кто на статью забредет :-) Поэтому в просветительских целях и добавил ссылочку.
  • CSS3: Во веки веков!
    0
    Спасибо! Все верно. Уже изменил!
  • CSS3: Во веки веков!
    +1
    Спасибо!!! Вы очень верно заметили, меня тоже это смущало. Сейчас исправлю.
  • moc — консольный двухпанельный клиент-серверный проигрыватель музыки
    +1
    Респект автору! Обязательно буду пользоваться. Особенно чувствуешь необходимость в таких программах, когда работаешь на слабеньком ноуте, а запущенных процессов — масса.
  • Сountdown-счетчики Ubuntu 9.10
    0
    Спасибо! Сразу не заметил, а ведь верно! Уже поправил.
  • Сountdown-счетчики Ubuntu 9.10
    0
    Огромное спасибо за добрый призыв! Статью перенес в Убунтариум.