LINUX.ORG.RU

Сообщения Shadow

 

dlna и не полный mkv

Добрый день!
Вчера пропатчил на роутере transmission, чтобы он нагло качал файлы с начала. Кино подхватилось minidlna, но проигралось только до того момента, до которого докачалось на момент начала воспроизведения. Телевизор показывал нормальную длину. Есть мысли, что произошло?

 

Shadow
()

angularjs ui.bootstrap модальные «окна» - в контроллер шаблона передать, кто он сейчас - модал или вид?

Здравствуйте.
Пишу местами развесистый интерфейс, UI для браузера - на ui.bootstrap, для мобилок будет - angular ui.

Пока делаю только ui.bootstrap.

У меня есть список товаров, и есть список событий покупки этих товаров.
Заводить и редактировать товары можно в самостоятельном интерфейсе, после редактирования переходим к списку товаров. Но если мы заводим событие покупки, мы или выбираем из существующих товаров, или заводим новый. Тогда в modal открывается тот же самый шаблон, с теми же контроллерами, что и в интерфейсе товара. Но по кнопке «сохранить» я должен вернуться в интерфейс покупки, а не к списку товаров.

Вопрос: я могу тупо при вызове modal ставить глобальную переменную и проверять её в контроллере при обработке ng-submit. Но вдруг есть более изящный способ, чем методы языка бэйсик???

 ,

Shadow
()

Ботаны из MIT сделали сверх-токомак на сверх-проводниках

http://www.iflscience.com/physics/lets-all-get-cautiously-excited-about-fusio...
Ъ: обмотку сделали из двойного оксида барий-медь. Токамак уменьшился в разы, плазма греется очень сильно, за счёт более мощного поля плазма сжимается гораздо сильнее, выход энергии реакции в 6 раз превышает затраты на разогрев. Про то, как быстро сгорает токамак, не сказано.

 ,

Shadow
()

Разработка angularjs приложения вместе с Flask, как подружить в eclipse pydev с angular?

Размер приложения достиг того значения, когда надо автоматизировать разработку.

Я тут задавал уже вопрос про генерацию шаблонов для angular на лету, мне не советовали. Но не один я считаю это хорошей идеей - есть модуль для фласка Flask-triangle, как раз создаёт шаблоны форм и контролирует обмен данными с сервером.

Вопрос, как правильно приготовить модуль eclipse angularjs, чтобы он в куцых шаблонах jinja2 находил вызываемые контроллеры ангуляра?

 , ,

Shadow
()

PostgreSQL: bytea vs text/base64 - text wins!

Обнаружил, что картинки, которые сохраняю в базе, из bytea отдаются как по 9600 бод модему. Если хранить в text кодированными в base64, отдаются мгновенно. В инторнетах пишут, что да, всё так, храните в large objects. А есть какой параметр bytea, чтобы не тупил?

 ,

Shadow
()

Вопросы по «как лучше»

Приветствую.
Вычищаю баги из альфа-версии своего приложения (бэк-энд на flask+peewee, фронтэнд - ангуляр для бутстрапа и для мобилок). Также в фронтэнде есть пара-другая собственных UI виджетов, в меру сил написанных на plain JS. Возникла пара вопросов:
1. Я для отправки данных форм (и двоичных тоже) использую структуру JSON. При этом, вообще не парюсь по типу контента в заголовках, на сервере забираю с помощью request.get_json(force=True). Вопрос: вот это вот «force=True» - это хорошая практика? При таком подходе код проще и более читаемый, вся HTTP магия вообще спрятана.
2. Собственные UI виджеты дописывают данные в форму в структуру JSON. Фактически, это векторы(массивы) значений длинной 10-100 элементов. Я их передаю внутри JSON как список в квадратных скобках, на сервере по порядку разбираю. Имеет ли смысл вместо этого передавать KEY-VALUE? Пока всё работает, но вдруг где что сломают?
3. Имеет ли смысл использовать в PostgreSQL поля array?

 , , ,

Shadow
()

Вектор в функцию JavaScript

Вот, творил себе всякое... И понадобилось вынести в функцию отрисовку вектора на канве. Логично предположить, что аргументами должны быть вектор и канва... ВЕКТОР!!!!! Я прочитал мануал по функциям. Блин. Даже plain C человечнее для кодера по алгоритмам.

Разобрался. У функции есть один аргумент - объект, а его уже склонять как надо.

PS. Не так разобрался. У меня просто вектор не вовремя создавался, поэтому не проходил. Да, я не макака-кодер и опыта думать асинхронно пока плохо получается.

Перемещено JB из talks

 , ,

Shadow
()

Я правильно понял прикол ангулара?

Я правильно понял, что директива в HTML вида «имя-дерективы» в js коде контроллера считается как имяДирективы? А где это большими буквами написано? Я час тупил...

 ,

Shadow
()

upnp avtransport - кто-нибудь ковырял?

Добрый день.

Гуглил, каким образом заставить Smart TV воспроизводить какой-либо контент по http, с удивлением узнал, что DLNA для этого вообще не нужно. Нужно просто обменяться с телеком парой http запросов с XML контентом, в котором указать произвольную ссылку на медиа контент и дать команду играть. Телек перестанет заниматься тем, чем занимается и начнёт воспроизводить указанный http.

Есть желание сделать простую кросс-платформенную тулзу, которая бы получала аргумент - URL - и заставляла телек его воспроизводить. Затем добавить адд-он к мозилле, который бы отправлял контент на телек. Возможно, допилить vlc, чтобы он запускал поток и отправлял в телек ссылку на себя.

Никакого DLNA, никаких тормозов, только маленький кусочек upnp. С удивлением обнаружил, что никто этим не занимается.

Может, тут кто ковырял upnp?

 

Shadow
()

Как мне поставить systemd на slackware?

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

По разным причинам, из хорошо поддерживаемых (относительно) дистрибутивов, не изменившихся в управлении за ...цать лет (и похожих на старую солярку с 386BSD) остались только слака/salix.

И вот гипотетический мысленный эксперимент для тех, кто не понимает нелюбителей systemd в дистрибутивах: представьте, что Вам нужно поставить systemd с вейляндом на slackware. Не важно, зачем... Просто Вы вынуждены.

PS. Решено, надо поставить Fedora.

 ,

Shadow
()

Опять про *дуины

Приветствую. Хочу сварганить на базе arduino leonardo/micro HID девайс: миди контроллер для гитаризма (крутилки в гитар риг, педальки). Возможно, с мелкосерийным производством.

Пока не нашёл в инете инструкций, как после макетирования на дуине собрать чип с обвязкой и USB на собственной плате. Направьте, где по таким извращениям читать. Время/навыки на пайку есть, на разработку под контроллер USB+midi - нет.

Нашёл: http://txapuzas.blogspot.ru/2009/12/paperduino-leonardo-clon-de-arduino.html

Отличная база для DIY девайсов.

 

Shadow
()

Вид вложений в thunderbird.

Приветствую. Давно хотел узнать, почему в thunderbird такие «дискриминированные» малюсенькие иконки аттачей внизу окна. Например, объяснить моим пожилым родителям по телефону, где найти аттач, было нетривиальной задачей. У себя я для того, чтобы иконки аттачей сразу были видны, использую, стыдно сказать, OutlookAlike расширение.

Раньше использовал conversations, но они делают thunderbird просто эпически тормозным и вообще какие-то кривые и не настраиваемые.

Есть кошерные решения?

 , , ,

Shadow
()

Когда СПО таки торт...

Под виндой с дуру начал кодить на питоне с помощью коммерческого дистрибутива. И почему-то это г...о заняло 1,6 гига. И ещё с бубнами и mingw32 собирало модули.
Я его снёс, поставил нормальный, который 16 мб в архиве. Оказалось, Корпорация Зла для него раздаёт готовый c++ тулчейн для беспроблемной сборки модулей, как в линуксе.

 ,

Shadow
()

Canvas в долбоскрипте...

Здравствуйте. Ковыряю некий скрипт, масштабирующий и кропящий картинки. Хочу добавить функционал вращения. С удивлением узнал, что канва вращается вместе с полем координат. Так как кропить надо и после вращения, нужно как-то сообщать реальные координаты функции кропа.

Вопрос: можно ли к объекту канвы добавить своё свойство (перегрузить, так сказать), в котором хранится угол поворота? Это бы сильно улучшило программу и мою карму по сравнению с созданием левой глобальной переменной.

В общем, написал с нуля сам, попутно разбираясь. save() и restore() с растром в контексте не работают, нужно двигать центр координат через translate и СОХРАНЯТЬ УГОЛ ПОВОРОТА в отдельной переменной, чтобы по ней пересчитывать координаты мыши. При этом при последующем вращении к вращаемому контексту всё тот же угол ДОБАВЛЯЕТСЯ к текущему состоянию (это важно при перепозиционировании контекста после поворота), а при пересчёте координат мыши нужно рассчитывать полный суммарный угол.

Код:

<!DOCTYPE html>
<html>
<HEAD>
 <STYLE type="text/css">
 /* Core component styles */
.image-crop {
  align: left;
  width: 300px;
  margin: 0 auto;
  position: relative;
  -webkit-user-select: none;
  -moz-user-select: none;
  -ms-user-select: none;
  -o-user-select: none;
  user-select: none;
}

/* rotate handle */
.image-crop .rotate-handle {
  display: block;
  position: absolute;
  bottom: 6px;
  right: 2px;
  background: rgba(255,255,255,0.7);
  width: 50px;
  height: 50px;
  cursor: pointer;
  border-radius: 50px 50px;
}

.image-crop .rotate-handle > span {
  text-align: center;
  color: rgba(0, 0, 0, 0.5);
  font-size: 34pt;
  display: block;
  position: relative;
  top: -10px;
}

/* zoomin handle */
.image-crop .zoomin-handle {
  display: block;
  position: absolute;
  bottom: 6px;
  left: 2px;
  background: rgba(255,255,255,0.7);
  width: 50px;
  height: 50px;
  cursor: pointer;
  border-radius: 50px 50px;
}

.image-crop .zoomin-handle > span {
  text-align: center;
  color: rgba(0, 0, 0, 0.5);
  font-size: 34pt;
  display: block;
  position: relative;
  top: -10px;
}

/* zoomout handle */
.image-crop .zoomout-handle {
  display: block;
  position: absolute;
  bottom: 6px;
  left: 56px;
  background: rgba(255,255,255,0.7);
  width: 50px;
  height: 50px;
  cursor: pointer;
  border-radius: 50px 50px;
}

.image-crop .zoomout-handle > img {
  text-align: center;
  color: rgba(0, 0, 0, 0.5);
  font-size: 34pt;
  display: block;
  position: relative;
  top: 8px;
  left: 8px;
}

 </STYLE>
</HEAD>
<body>

<div class="image-crop"><canvas id="example" width="300" height="300" style="border:1px solid #d3d3d3;" onmousedown="onCanvasMouseDown(event)" onmousemove="onCanvasMouseMove(event)" onmouseup="onCanvasMouseUp(event)">
Your browser does not support the HTML5 canvas tag.</canvas>
<div class="zoomin-handle" onclick="zoomin(event)"><img src="zoomin.svg"></div>
<div class="zoomout-handle" onclick="zoomout(event)"><img src="zoomout.svg"></div>
<div class="rotate-handle" onclick="rotate(event)"><img src="curved2.svg"></div>
</div>

<script>
    var currentX = 0, currentY = 0, dragging = false, startX = 0, startY = 0, zooming = false;
    zoom = 1;
    var minXPos = 0, maxXPos = 50, minYPos = 0, maxYPos = 50, xangle = 0; 
    var height = 300, width = 300;
            
    function reset() {
            files = [];
            zoom = 1;
            ctx.clearRect(0, 0, $canvas.width, $canvas.height);
            $input.value = null;
            $img.src = '';
          }
        
        function zoomin() {
        zoom = zoom * 1.1;
        var newXPos = currentX * zoom;
        var newYPos = currentY * zoom;
        moveImage(currentX, currentY);
        }
        
        function zoomout() {
        zoom = zoom / 1.1;
        var newXPos = currentX * zoom;
        var newYPos = currentY * zoom;
        moveImage(currentX, currentY);
        }
        
        function moveImage(x, y) {

            var xcos = Math.round(Math.cos(xangle * Math.PI));
            var xsin = Math.round(Math.sin(xangle * Math.PI));

            x2 = x * xcos + y * xsin;
            y2 = y * xcos - x * xsin;

            targetX = x;
            targetY = y;
            ctx.clearRect(0, 0, $canvas.width, $canvas.height);
            ctx.drawImage($img, x2, y2, $img.width * zoom, $img.height * zoom);
          }

          function updateDragBounds() {

            minXPos = $canvas.width - ($img.width * zoom);
            minYPos = $canvas.height - ($img.height * zoom);
          }

    onCanvasMouseUp = function(e) {
            startX = 0;
            startY = 0;
            dragging = false;
            currentX = targetX;
            currentY = targetY;
          };
    
    onCanvasMouseDown = function(e) {
            startX = e.clientX;
            startY = e.clientY;
            zooming = false;
            dragging = true;
          };
          
    onCanvasMouseMove = function(e) {

            if (!dragging) {
              return;
            }
            
            var diffX = startX - e.clientX; 
            var diffY = startY - e.clientY; 
            moveImage(currentX - diffX, currentY - diffY);

          };
          
    rotate = function(e) {

            ctx.translate(150, 150);
            ctx.rotate(0.5 * Math.PI);
            ctx.translate(-150, -150);
            
            xangle = xangle + 0.5;
            
            var tX = currentX;
            var tY = currentY;
           
            currentX = -tY;
            currentY =  tX;
            
            targetX = -tY;
            targetY =  tX;
            moveImage(currentX, currentY);
          };
          
    var $canvas = document.getElementById('example'),
        ctx     = $canvas.getContext('2d'),
        $img     = new Image();
    $canvas.height = 300;
    $canvas.width = 300;
    $img.src = '488132.jpg';
    newWidth = $img.width * zoom;
    newHeight = $img.height * zoom;
    $img.onload = function () {

    ctx.drawImage($img, 0, 0);
    }

</script>

</body>
</html>

 ,

Shadow
()

Кажется, делаю странное: jinja2 + angularjs

Вчера в качестве теплейта в angularjs использовал динамически сгенерированный в jinja2 шаблон. И мне понравилось.

Т.е. данные, которые грузятся один раз в вид, генерируются на сервере сразу вместе с шаблоном. Данные, с которыми непосредственно работает angularjs интерфейс, гоняются между получившимся приложением и бэк-эндом.

Это плохой или хороший путь?

 ,

Shadow
()

Мне показалось, или на английском мануалы по JS лучше???

Если в гугле вбить:

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

Если вбить

angularjs route params
- получаю простые понятные мануалы и примеры.

 , , ,

Shadow
()

Aptana beta виснет на комментариях '//' в javascript.

Subj. Пользуется ли кто?

PS. Аптана погрязла в обновлениях, да ещё и бета была... Всё снёс поставил релиз, всё ок.

 ,

Shadow
()

Почему функция внутри контроллера AngularJS возвращает какой-то мусор?

Осваиваю Angular.

Есть роутер и контроллеры, в которых:

	var myApp = angular.module('myApp', ['ngRoute','ui.bootstrap']);
	myApp.config(function ($routeProvider) {
		$routeProvider
			.when('/',
				{
					controller: 'SimpleController',
					templateUrl: 'static/ng/v1.html'
				})
			.when('/p2',
				{
					controller: 'PagingController',
					templateUrl: 'static/ng/v2.html'
				})
			.otherwise({ redirectTo: '/'});
		});
		

  myApp.controller('PagingController', function($scope, $http) {
  getData(1,20);
  function getData(page, paging) {
    return $http.get("items?page="+page).then(function(response) {
    	result = response.data;
    	$scope.items = result;
        return(result);
      });
  }

js код пока в index.html, в нём же ng-view.

В static/ng/v2.html такой код:

<div ng-controller="PagingController">
<h4>Sample Server Pagination</h4>
<pagination total-items=2000 max-size=3 ng-model="currentPage" ng-change="pageChanged()" 
items-per-page="20" previous-text="<" next-text=">"></pagination>
<ul>
<li ng-repeat="item in items"><a href="iteminfo?id={{item.id}}">{{item.label}}</a></li>
</ul>
</div>

Внимание, ВОПРОС. Сейчас всё это работает как я хотел, НО! Изначально я хотел обновлять список items так:

$scope.items = getData(1,20);
- а функция getData() должна возвращать JSON объект. Фигушки, она возвращает НЁХ, зато унутри неё всё работает. Более того, она не зависимо от того, что я из неё возвращаю (хоть объект, хоть строку), возвращает НЁХ в виде не опознанного объекта.

Я ХОЧУ ЗНАТЬ, что происходит, и почему я предполагаю одно, а происходит другое. Со scope, как я понял, не связано - из функции ng-repeat отлично заполняется.

PS. LOR wiki открывается только когда я разлогинен, иначе «Произошла неизвестная системная ошибка. Сообщение об ошибке: java.lang.NullPointerException.» WTF?

 , , кибертелепатия

Shadow
()

Туплю читая доки angularjs

Или это теперь такая мода пошла писать ТАК документацию и примеры, или я совсем отупел.

Прочитал про роутинг в angularjs, создал объект своего модуля, в нём создал пути (config), сделал подгружаемые темплейты - всё как в примерах.

Чего не могу найти, так это куда и как биндить всю эту котовасию в исходном html, который грузится с сервера. Ну тот html, который браузер сначала открывает, ну вы поняли. Все примеры и доки - пара конструкций на js, описывающих пути, и подгружаемые html по этим путям. А куда они грузятся - вообще ничего не написано...

пилять, это ж ng-view! Надо больше отдыхать.

 , ,

Shadow
()

PostgreSQL и á, ë, è, ç поиск как базовых знаков?

Приветствую.

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

Есть ли возможность сказать постгресу, чтобы искал слова по маскам, где ç указан как c и т.п.?
Упс, нашёл. В постгресе называется «unaccent»

 ,

Shadow
()

RSS подписка на новые темы