13:52 

Daredevil photographers brave boiling waters to capture the drama of searing-hot lava

Vi Veri Veniversum Vivus Vici
17:11 

ExtJS add custom text to the fieldset label

Vi Veri Veniversum Vivus Vici
  1. var x = Ext.getCmp('ext-comp-1404').el;
  2. x.first().createChild({tag: 'span', html: ' (test message)'});

@темы: ExtJS, JavaScript

19:11 

CLI-like table in JavaScript and ExtJS

Vi Veri Veniversum Vivus Vici
  1. /**
  2.   * Returns ASCII-table in CLI-like style
  3.   * @param {Array} data array of rows like key=>value
  4.   * @param {Object} headers hash of table's headers like key=>title
  5.   * @return {String}
  6.   */
  7. cliTable = function (data, headers) {
  8. var cellLengths = {},
  9. result,
  10. cell,
  11. cellLength,
  12. bar = '+',
  13. header = '|',
  14. padRight = function (value, maxLen, character) {
  15. if (!Ext4.isString(value)) {
  16. value = value.toString();
  17. }
  18. while (value.length < maxLen) {
  19. value += character;
  20. }
  21. return value;
  22. };
  23. Ext4.each(data, function (row) {
  24. Ext4.Object.each(headers, function (key) {
  25. cellLength = row[key].toString().length;
  26. if (!cellLengths[key] || (cellLengths[key] < cellLength)) {
  27. cellLengths[key] = cellLength;
  28. }
  29. });
  30. });
  31. Ext4.Object.each(headers, function (key, value) {
  32. cellLength = cellLengths[key];
  33. bar += Ext4.String.repeat('-', cellLength + 2) + '+';
  34. if (value.length > cellLength) {
  35. value = value.substr(0, cellLength);
  36. }
  37. header += ' ' + padRight(value, cellLength, ' ') + ' |';
  38. });
  39. result = bar + 'n' + header + 'n' + bar + 'n';
  40. Ext4.each(data, function (row) {
  41. result += '|';
  42. Ext4.Object.each(row, function (key, value) {
  43. result += ' ' + padRight(value, cellLengths[key], ' ') + ' |';
  44. });
  45. result += 'n';
  46. });
  47. result += bar;
  48. return result;
  49. }

@темы: ExtJS 4, JavaScript

16:59 

MySQL settings for big dumps

Vi Veri Veniversum Vivus Vici
  1. innodb_buffer_pool_size = 2048M
  2. innodb_additional_mem_pool_size = 64M
  3. innodb_flush_log_at_trx_commit = 0
  4. innodb_thread_concurrency = 8
  5. innodb_flush_method = O_DIRECT
  6. innodb_checksums = 0
  7. innodb_file_format_check = 0
  8. innodb_stats_on_metadata=0

@темы: MySQL

18:16 

ExtJS Date format for russian

Vi Veri Veniversum Vivus Vici
  1. Ext.Date.patterns = {
  2. ISO8601Long:"d.m.Y H:i:s",
  3. ISO8601Short:"d.m.Y",
  4. ShortDate: "D, M j/n/Y",
  5. LongDate: "l, F d, Y",
  6. FullDateTime: "l, F d, Y G:i:s",
  7. MonthDay: "F d",
  8. ShortTime: "G:i",
  9. LongTime: "G:i:s",
  10. SortableDateTime: "Y-m-dTH:i:s",
  11. UniversalSortableDateTime: "Y-m-d H:i:sO",
  12. YearMonth: "F, Y"
  13. };
  14.  
  15. Ext.DP = Ext.Date.patterns;
  16.  
  17. var dt = new Date(2012, 9, 14, 17, 38, 42);
  18. Ext.Object.each(Ext.DP, function(k, v) {
  19. console.log(k + ' -> ' + Ext.Date.format(dt, v));
  20. });

@темы: ExtJS 4

02:27 

JavaScript clasterise data

Vi Veri Veniversum Vivus Vici
  1. var s1 = Math.round(Math.random() * 10),
  2. s2 = 10 + Math.round(Math.random() * 10),
  3. n = Math.round(Math.random() * 5) + 2,
  4. i, clusters = {}, center, d = (s2 - s1) / n;
  5.  
  6. console.log('Clustering from ' + s1 + ' to ' + s2 + ' by ' + n + ' clusters');
  7. for (i = s1; i < s2; i++) {
  8. center = 'cluster_' + (s1 + Math.floor( (i - s1) / (s2 - s1) * n ) * d).toString();
  9. clusters[center] = (clusters[center] || []).concat(i);
  10. console.log( center + ' <- ' + i );
  11. }
  12.  
  13. console.log(clusters)

@темы: JavaScript

17:50 

Find first level directories under the current directory exclude multiple directories

Vi Veri Veniversum Vivus Vici
find . -maxdepth 1 \( -name extjs -o -name .svn \) -prune -o -type d -print

@темы: *nix

10:58 

Injecting Traits into Javascript Objects

Vi Veri Veniversum Vivus Vici
На блоге Ed Spencer в посте о его взглядах на микшины в старых версиях ExtJS дана ссылка на блог другого программиста и его статью Injecting Traits into Javasсript Objects. Спасаю ее здесь:



Duplication is the mother of all evil in programming. Remaining DRY at all costs should be your goal at all times. A pattern repeats itself one time and your code complexity goes up exponentially.

One great way to DRY up your code is via Traits. Traits are functional equivalent of base classes where you can collect most often used functions and inject these Traits into your objects. Here’s one simple way to do it in Javasсript (using extjs here):



  1. MyTrait = {
  2. xhr: function(config) { return Ext.Ajax.request(config) },
  3. submit: function(basic_form,config) {
  4. //perform some checks on config
  5. // and call basic_form.submit
  6. },
  7. //...add more utility functions
  8. }
  9. function MyGrid(config) {MyGrid.superclass.constructor.call(this,config)}
  10. Ext.extend(MyGrid, Ext.grid.GridPanel, MyTrait);

@темы: ExtJS

18:27 

PHP network interface bind

Vi Veri Veniversum Vivus Vici
For example, you can use it for SOAPClient: stackoverflow.com/questions/3444359/is-it-possi...
Or for common purposes: ilia.ws/archives/51-PHP-bind-support-via-stream...

  1. <?php
  2.  
  3. $conn = stream_context_create(array('socket'=>array('bindto' => "1.2.3.4:0")));
  4. file_get_contents("url";, NULL, $conn);
  5.  
  6. ?>

@темы: PHP, SOAPClient

12:34 

Late Static Binding PHP

Vi Veri Veniversum Vivus Vici
  1. <pre>
  2. <?php
  3.  
  4. class S {
  5.  
  6. protected $_data = array();
  7.  
  8. public function __construct($separator) {
  9. $name = get_class($this);
  10. for ($i = 1; $i < 3; $i++) {
  11. for ($j = 1; $j < 3; $j++) {
  12. $this->_data[$i][$j] = sprintf('Property %d%s%d of %s', $i, $separator, $j, $name);
  13. }
  14. }
  15. }
  16.  
  17. public function get($id, $pid) {
  18. return isset($this->_data[$id][$pid]) ? $this->_data[$id][$pid] : null;
  19. }
  20. }
  21.  
  22. class S1 extends S {
  23. }
  24.  
  25. class S2 extends S {
  26. }
  27.  
  28. abstract class A {
  29.  
  30. abstract protected function i();
  31.  
  32. public static function getById($id, $property_id) {
  33. if ($id <= 0 || $property_id <= 0) {
  34. throw new Exception('Неверные данные');
  35. }
  36. return static::i()->get($id, $property_id);
  37. }
  38. }
  39.  
  40. class B extends A {
  41.  
  42. private static $instance;
  43.  
  44. protected function i() {
  45. if (!self::$instance) {
  46. $len = rand(1, 20);
  47. self::$instance = new S1(str_repeat('-', $len));
  48. }
  49. return self::$instance;
  50. }
  51.  
  52. }
  53.  
  54. class C extends A {
  55.  
  56. protected function i() {
  57. $len = rand(1, 20);
  58. return new S2(str_repeat('*', $len));
  59. }
  60.  
  61. }
  62. for ($i = 0; $i < 5; $i++) {
  63. ?>
  64. <div style="border:1px #ccc dashed;"><?php var_dump(B::getById(rand(1,2), rand(1,2))); var_dump(C::getById(rand(1,2), rand(1,2)));?> </div>
  65. <?php
  66. }


If there will be "return self::i()->get($id, $property_id);", you will get

Fatal error: Cannot call abstract method A::i() in /var/web/tests/lsb_2.php on line 37
 
Call Stack:
0.0003 350596 1. {main}() /var/web/tests/lsb_2.php:0
0.0003 350728 2. A::getById() /var/web/tests/lsb_2.php:65
 

@темы: PHP

19:39 

ExtJS 4.1 Form fiels tooltips / Добавление подсказок для полей формы в ExtJS 4

Vi Veri Veniversum Vivus Vici
I modified "absform.js" example from ExtJS 4.1 distributive demos to show you how to use Ext.tip.ToolTip delegates. First, I found within Firebug that form fields have class ".x-form-item" (sure, you must to use Ext.baseCSSPrefix). Than, you can get id from HTMLElement and get ExtJS Component by id. Here there is the code.

Я модифицировал демку "absform.js" из поставки экста, чтобы показать вам возможности делегирования у компоненты тултипа. Для начала с помощью файрбага я увидел, что элементы формы (поля) имеют класс .x-form-item (конечно, правильнее вместо .x- использовать baseCSSPrefix). Из tip.triggerElement, который является экземпляром или подклассом HTMLElement, можно взять айдишник и затем с помощью getCmp получить полноценную компоненту экста.

читать дальше


@темы: ExtJS 4

15:43 

Изменение отображения нодов в TreePanel в ExtJS 4

Vi Veri Veniversum Vivus Vici
Встала задача: кастомно отображать элементы дерева, возможно, по некоторому условию. Можно, конечно, повесить обработчик на событие load у TreeStore и рекурсивно обработать каждый узел, после чего сделать ему commit, однако это решение обладает рядом недостатков:
  • Тормозит поток UI
  • По сути вторично выполняет уже сделанную самим экстом работу по выводу дерева


читать дальше

@темы: ExtJS 4

15:23 

FiltersFeature в ExtJS 4 - баг с появлением пункта меню фильтров

Vi Veri Veniversum Vivus Vici
Сам подошел к фиксу, и одновременно нашел решение вот тут: www.sencha.com/forum/showthread.php?146797-Grid...

Обращаю внимание, что обращаться к элементам как к .x-menu-body не вполне корректно. Используйте Ext.baseCSSPrefix

@темы: ExtJS 4

17:01 

Исправил StringFilter (не показывал иконку с биноклем) в FiltersFeature для ExtJS 4

Vi Veri Veniversum Vivus Vici
Решение выложил здесь: www.sencha.com/forum/showthread.php?189422-ExtJ...
Прошу прощения за свой английский.

@темы: ExtJS 4

18:53 

Увеличение производительности запросов из INFORMATION_SCHEMA

Vi Veri Veniversum Vivus Vici
Крайне быстро они делаются, если отключить опцию innodb_stats_on_metadata

Выдержка из официальной документации:

Version Introduced 5.1.17
Command-Line Format --innodb_stats_on_metadata
Option-File Format innodb_stats_on_metadata
Option Sets Variable Yes, innodb_stats_on_metadata
Variable Name innodb_stats_on_metadata
Variable Scope Global
Dynamic Variable Yes
Permitted Values
Type boolean
Default ON


When this variable is enabled (which is the default, as before
the variable was created), InnoDB updates
statistics during metadata statements such as
SHOW TABLE STATUS or
SHOW INDEX, or when accessing
the INFORMATION_SCHEMA tables
TABLES or
STATISTICS. (These updates are
similar to what happens for ANALYZE
TABLE
.) When disabled, InnoDB
does not updates statistics during these operations. Disabling
this variable can improve access speed for schemas that have a
large number of tables or indexes. It can also improve the
stability of execution plans for queries that involve
InnoDB tables.



This variable was added in MySQL 5.1.17.


@темы: MySQL, INFORMATION_SCHEMA

15:58 

Паттерн Цепочка ответственности (Chain-of-responsibility pattern)

Vi Veri Veniversum Vivus Vici
Написал вот такой небольшой пример быдлокода. Предполагается, что необходимо 1) реализовать паттерн как таковой 2) реализовать динамическое изменение цепочки, как изнутри, так и снаружи, если процесс выполнения не может возвращать эту цепь по каким-либо причинам (проблемы в архитектуре, как частный случай).

читать дальше

@темы: Design Patterns, PHP

11:29 

В mysqldiff поправлена работа с изменением колонок, когда они могут стать PK

Vi Veri Veniversum Vivus Vici
Следите за развитием:

github.com/GuyFawkes/mysqldiff

@темы: Perl, mysqldiff

12:05 

fatal: CRLF would be replaced by LF in

Vi Veri Veniversum Vivus Vici
Как часто это бесит в Git!

Заходим в нужную папку и выполняем:



  1. $ find . -type f -iname "*.css" -exec dos2unix "{}" +;
  2. dos2unix: converting file ./docblox/syntax_highlighter/tests/js/qunit.css to Unix format ...
  3. dos2unix: converting file ./docblox/syntax_highlighter/styles/shCoreDefault.css to Unix format ...
  4. dos2unix: converting file ./docblox/syntax_highlighter/styles/shCoreDjango.css to Unix format ...
  5. dos2unix: converting file ./docblox/syntax_highlighter/styles/shThemeDjango.css to Unix format ...
  6. dos2unix: converting file ./docblox/syntax_highlighter/styles/shThemeMDUltra.css to Unix format ...
  7. dos2unix: converting file ./docblox/syntax_highlighter/styles/shCoreRDark.css to Unix format ...
  8. dos2unix: converting file ./docblox/syntax_highlighter/styles/shCoreEclipse.css to Unix format ...
  9. dos2unix: converting file ./docblox/syntax_highlighter/styles/shCoreEmacs.css to Unix format ...
  10. dos2unix: converting file ./docblox/syntax_highlighter/styles/shThemeDefault.css to Unix format ...
  11. dos2unix: converting file ./docblox/syntax_highlighter/styles/shThemeFadeToGrey.css to Unix format ...
  12. dos2unix: converting file ./docblox/syntax_highlighter/styles/shThemeRDark.css to Unix format ...
  13. dos2unix: converting file ./docblox/syntax_highlighter/styles/shCoreMidnight.css to Unix format ...
  14. dos2unix: converting file ./docblox/syntax_highlighter/styles/shThemeEmacs.css to Unix format ...
  15. dos2unix: converting file ./docblox/syntax_highlighter/styles/shThemeWordpress.css to Unix format ...
  16. dos2unix: converting file ./docblox/syntax_highlighter/styles/shThemeMidnight.css to Unix format ...
  17. dos2unix: converting file ./docblox/syntax_highlighter/styles/shCoreFadeToGrey.css to Unix format ...
  18. dos2unix: converting file ./docblox/syntax_highlighter/styles/shCoreMDUltra.css to Unix format ...
  19. dos2unix: converting file ./docblox/syntax_highlighter/styles/shThemeEclipse.css to Unix format ...
  20. dos2unix: converting file ./docblox/syntax_highlighter/styles/shCore.css to Unix format ...
  21. dos2unix: converting file ./docblox/css/black-tie/jquery-ui-1.8.2.custom.css to Unix format ...
  22. dos2unix: converting file ./docblox/css/navigation.css to Unix format ...
  23. dos2unix: converting file ./docblox/css/jquery-ui.css to Unix format ...
  24. dos2unix: converting file ./docblox/css/default.css to Unix format ...
  25. dos2unix: converting file ./docblox/css/docblox/jquery-ui-1.8.16.custom.css to Unix format ...
  26. dos2unix: converting file ./docblox/css/api-content.css to Unix format ...
  27. dos2unix: converting file ./docblox/css/jquery.treeview.css to Unix format ...
  28. dos2unix: converting file ./docblox/css/sen.full.min.css to Unix format ...
  29. dos2unix: converting file ./docblox/css/theme.css to Unix format ...




Вместо .css, конечно, можно поставить любую маску. Ну и да, утилиту dos2unix надо вначале поставить.



По мотивам forrst.com/posts/Find_DOS_CRLF_files_and_conver...

@темы: Git

11:55 

Добавить колонку в конструкторе Grid Panel в ExtJS 4

Vi Veri Veniversum Vivus Vici
Если внезапно понадобилось это сделать именно в конструкторе, то делаем так:



config - параметр функции constructor, в конце не забываем делать this.callParents(arguments);

Но все же правильно сделать это в initComponent.

17:05 

lock Доступ к записи ограничен

Vi Veri Veniversum Vivus Vici
Закрытая запись, не предназначенная для публичного просмотра

URL

Small Coder Blog

главная