Inlägg

Inlägg som phroggyy har skrivit i forumet
Av phroggyy

En tanke jag haft är att sammankoppla genom en key-value tabell, där nyckeln är "rule_name" och key är själva regeln. på det sättet blir jag mer flexibel med reglerna. Kan t ex ha en key som då heter "max_consecutive_intervals" eller liknande. Hur tids-regler formatteras är dock fortfarande problematiskt

Av phroggyy

@Outlaw84: booking_interval är helt orelaterat till tillgänglihet, och specificerar endast hur långt ett "pass" är

Av phroggyy

@ToJa92: Yes, min tanke vara ju att ha en för resursen och en för undantagen, och det är även så jag börjat strukturera det. Start date och end date ligger på resursen då vi på jobbet kom fram till att det blev overkill med att kunna separera det så mycket med olika perioder (speciellt då majoriteten inte kommer ha ett end_date utan låta det löpa indefinitely). Angående intervallet är det alltså basintervallet, slutkunden kan sedan välja multiplar av intervallet, dvs om booking_interval är 1h kan slutkund välja 1h, 2h, 3h etc.

Update också, kom på ett till scenario som kommer behövas: "tillåt endast slutkunden att hyra * intervall i sträck". Detta är inte direkt ett datetime constraint, och det är just sådana regler som gör strukturen på rules-tabellen lite jobbig.

Vill nonetheless tacka för de förslag jag fått hittills!

Av phroggyy

@Outlaw84: Jo, men vad händer när jag vill redigera och ändra mina regler, så att min fredagslunch plötsligt är 11-13 istället? Ska jag då skriva om båda två? Jag förstår tänket, men det känns ändå som att det blir onödigt komplext. Nu vet jag inte om det är så, men det är så det känns...

Det känns mer cleant om man bara skulle spara sina regler på ett ställe, istället för att låta dem direkt interagera med resursen (någon sorts separation of concerns)

Ett annat case är följande "ha tennisbanan tillgänglig mån-fre, men inte de tider då bilen (eller annan resurs) är uthyrd". I detta fall måste man börja förhålla sig till hur andra resurser agerar... Detta är dock i ett senare skede och först och främst vill jag bara lösa den första delen.

Kan för övrigt nämnas att applikationen byggs på PHP-frameworket Laravel

Av phroggyy

[pseudo(/php)]Förslag på kod- samt databashantering av flexible regler (datetime mestadels)

Goddag SweClockers,

Nu är det så att jag håller på att bygga ett system för att lägga upp olika resurser för uthyrning (säg t ex att man vill hyra ut en tennisbana). För nuvarande är strukturen:

Resource title description enabled_days booking_interval start_date end_date price

Enabled days här är då vilka veckodagar min resurs finns tillgänglig (t ex mån-fre). Bokningsintervallet är längden per bokning, t ex att tennisbanan kan hyras i entimmesintervall (i vilket fall booking_interval blir 1*60*60), resten bör vara tillräckligt självförklarande. Problemet kommer nu i overrides, eller regler. Användaren ska ha möjlighet att t ex lägga upp "en tennisbana som är tillgänglig mån-fre 9-17 (allt hittills är del av resursen i sig), men ej tillgänglig mellan 12-13 (pga lunch). På fredagar är tennisbanan otillgänglig 12-14 (lång lunch)."

Problematiken är, som ni kanske förstår, att översätta detta till kod på något vettigt sätt. Hur strukturerar jag databastabelle(r)n(a) för att lättast hålla koll på allt? Hur appliceras regler, etc.

Självklart är detta inte en lätt fråga och jag ber inte om något absolut svar, utan öppnar mest upp för idéer här om folk vill bidra och försöka komma på en bra lösning.

Av phroggyy
Skrivet av ToJa92:

Använder du `var_dump` så är det inte säkert att du får data i JSON-format. Vill du vara säker på att få data kodad i JSON skulle du kunna använda `json_encode`: http://php.net/manual/en/function.json-encode.php.

Skickades från m.sweclockers.com

var_dumpar en json_encodad array för att se att jag får ut rätt resultat (anledning till att jag inte bara besöker urlen är att sidan formatteras annorlunda om man besöker den vs requestar med content-type (den returnerar html eller json)). Så det enda som borde komma ut är json_encode($data). Intressant nog får jag rätt respons till ajax-requesten om jag kör

echo json_encode($data); die;

Dock inte om jag utelämnar die;... Misstänker att vårt interna framework någonstans gör något konstigt med responser som requestas med content-type json.

Av phroggyy

JSON-respons skapar extra array utanför respons-objektet

Hej,

Ska försöka förklara mitt problem så bra jag kan, trots att jag inte förstår det helt själv. Jag hämtar data från Google Analytics i en metod och sparar denna i databasen. En annan metod hämtar sedan en del av denna data. Om jag var_dumpar datan på urlen där metoden anropas får jag ut en korrekt json-kodad array som innehåller ett antal objekt. Datan i detta fall är top referrals för sidan, och jag får då ut en array i stil med

[ { "domain": "abc.tld", "urls": [ "abc.tld\/" ], "value": "48" }, { "domain": "def.tld", "urls": [ "def.tld\/" ], "value": "37" } ]

När jag istället anropar denna sida via ajax får jag ut

["datan_ovan"][]

Dvs det finns en tom array i slutet. Är det någon som vet varför detta sker?

(Anledningen till att det är ett problem är att det blir en badly formed json response och jag hamnar i ajax error)

MVH
Leo

Av phroggyy

Val av DBRMS för geo-data

Hej SweClockers,

Idag kommer jag med mer än bara en fråga om hur man gör något – nu är det dags att rådfråga om val av DBRMS. Jag kommer i databasen spara addresser, persondata, produkter med mera. Nu är jag i det stadie att jag vill implementera geosökning för att kunna hitta avstånd från en punkt till, bland annat, de olika addresserna. Det lättaste skulle självklart vara att bara spara latitud och longitud i decimal eller varchar, hämta alla entries och sedan låta Google Maps API avgöra vilka punkter som är in range. Detta blir ju dock rätt uppenbart väldigt ineffektivt. Därför vill jag kunna filtrera ut platser baserat på avstånd från en viss punkt direkt i databasen, något jag efter en del läsning förstått borde gå att göra om man nyttjar spatial data types, POINT i MySQL då.

Till sist kommer då frågan: vilket DBRMS skulle ni ha valt för detta ändamål? Ändamålet är alltså avståndssökningar i databasen. helst open source/gratis i kommersiellt syfte, men har ni några andra jättebra förslag nämn gärna dem så får jag ta upp det med kund.

MVH
Leo

Av phroggyy

JS/jQuery resizeable med responsiv snap to grid

Tjenare,

Håller på med en formulärbyggare där tanken är att man ska kunna flytta runt block och ändra storleken på dessa för att bygga strukturen på sitt formulär. Dock vill jag självklart inte begränsa blockens/fältens storlek till pixlar, och vill därför snappa till ett bootstrap-grid (och därefter hämta klassen baserat på bredden). Då jag inte hittar några riktigt bra verktyg för det är det enda jag kan komma på att använda jQuery UI resizable och skapa en tom col-xs-12 div från vilken jag hämtar pixel-bredden för att ange resizable snap (alternativt ta container width och dela med 12). Löser sig inte detta kan man väl alltid ha knappar för resize antar jag...

On another note, är det någon som har en bra lösning på att spara ordningen rätt i databasen? Eller som åtminstone vet någon bra js draggable plugin med vilken man kan få ut ordningen av de sorterade elementen? (Tanken är ju att ha två-dimensionell sortering så att två fält kan placeras bredvid varandra.

MVH
Leo

Av phroggyy
Skrivet av zyberzero:

Du kan tillåta en viss användare att alltid köra vissa kommandon genom att skruva i /etc/sudoers - det finns en referens på https://help.ubuntu.com/community/Sudoers

Men kan du inte ställa in i ditt deploymenttool hur den ska hantera katalogrättigheter?

Då den sshar in i burken kan jag inte assigna rättigheter till kataloger då det kräver sudo. Dock insåg jag att logs ligger i min shared folder, så jag satte bara 775-rättigheter i logs istället så blev det rätt

Av phroggyy
Skrivet av phz:

Laravel försöker tydligen skriva loggar till ovanstående nämnda sökväg, men webbservern saknar skrivrättigheter i den angivna katalogen, varpå den avbryter. Ge skrivrättigheter åt webbservern för katalogen `/var/www/minsida.se/releases/5/storage/logs`.

Ah, right! Enda kvarstående problemet då: då jag kör Mina som deployment tool vill jag helst inte behöva SSHa in efter varje deploy och köra chown på var/www/minsida.se/current/storage/logs, utan hellre köra chown i deploy-scriptet. Problemet är att jag inte kan köra sudo-kommandon genom skriptet då den inte visar prompts (e.g password prompt), så är det möjligt att ge deployer-kontot rättighet att köra chown (och går det att begränsa till ett visst directory)?

Av phroggyy
Skrivet av phz:

Webbservern behöver generellt bara läsrättigheter för att kunna servera en viss fil.

"500 Internal Server Error" kan betyda väldigt mycket. Spana i felloggarna för servern för mer information om vad som går snett. Om din fellogg ligger i `/var/log/apache/error.log` så kör

tail -f /var/log/apache/error.log

i en terminal och kolla vilka felmeddelanden som dyker upp när du försöker komma åt sidan.

Jo, men om jag kör en chown -R www-data:www-data /var/www/minsida.se så fungerar det. I loggen får jag då ett permission denied:

'The stream or file "/var/www/minsida.se/releases/5/storage/logs/laravel-2015-04-21.log" could not be opened: failed to open stream: Permission denied'

Av phroggyy

[Apache] Sida visas inte trots chgrp www-data

Hej,

Har ett fel som jag tycker är lite konstigt... När jag deployar min sida via ett script (Mina) använder den en deployment ssh-användare, som tillhör www-data gruppen. Detta innebär att alla filer som laddas upp får ägarskapet deployer:www-data. Som jag tänker bör ju detta innebära att apache (www-data) får r-x perms, vilket den enligt ls -l också får. Jag kan dock inte se sidan när jag besöker url:en och får där ett 500 internal server error pga permissions. Någon som kan detta bättre än mig?

MVH
Leo

Av phroggyy
Skrivet av Wickit:

Testat ng-src istället för src? Vanliga src kan ge upphov till rätt buggiga beteenden när det används med angular-expressions.

ngSrc

Nepp, verkar inte ha löst något :/

Av phroggyy

[Hybridapp, AppGyver]Angular-view verkar hamna i infinite loop...

Tjenare,

Har nyligen börjat med utveckling av en hybridapp med AppGyver (som, till skillnad från PhoneGap, har stöd för en del native elements och features) som använder angular till det mesta. Har lyckats få till ett par vyer, men en av de ger upphov till ett rätt stort problem – applikationen verkar hamna i en infinite loop.

Det jag gör är att dra in videor från en Vimeo-användare (genom att anropa ett php-skript som ligger på en server, detta för att få tillgång till Vimeos hela api), och sedan skapa iframes av dessa. I min view ser detta ut som följande:

<div ng-controller="IndexController"> <super-navbar> <super-navbar-title> Session videos </super-navbar-title> </super-navbar> <div class="padding"> <section class="feed" overflow-scroll="true"> <div ng-repeat="video in videos" class="iframe-wrapper"> <h2>{{ video.name }}</h2> <iframe scrolling="no" src="{{ (vimeoBase + video.uri.substr(8)) | url }}" frameborder="0" width="320" height="180" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe> </div> </section> </div> </div>

Dold text

Anledningen till att jag har vimeoBase + video.uri.substr(8) är för att uri:n som returneras av vimeo är /videos/[id], och det är bara id:t jag är ute efter (då vimeoBase ger https://player.vimeo.com/). Jag vet att detta funkar då alla videor laddas in. Dock hamnar fortfarande loading.html ovanpå, vilket innebär att allt innehåll inte laddats in, och jag kan inte heller scrolla. Om jag testar samma i browsern på localhost får jag in alla videor, men kan inte heller där scrolla (och kollar jag resurserna tar det upp till 57s att ladda in och den upprepar sig en himla massa gånger).

Nu är frågan om det är någon som vet varför detta händer? Om det skulle behövas finns även controllern för min vy synlig nedan.

angular .module('videos') .controller('IndexController', function($scope, $sce, supersonic, $http) { // Controller functionality here $scope.videos = undefined; supersonic.logger.log ("Yo"); var postRequest = { method: 'GET', dataType: 'json', url: 'http://api.minside.tld/videos' }; $http(postRequest).success(function(data) { supersonic.logger.log (data); $scope.videos = data; $scope.vimeoBase = 'https://player.vimeo.com/video/'; //$sce.trustAsHtml($scope.videos); }).error(function(e, status) { supersonic.logger.log ('error code ' + status); supersonic.logger.log (e); }); }); angular.module('videos') .filter('trusted', function($sce) { return function(text) { return $sce.trustAsHtml(text); }; }); angular.module('videos') .filter('url', function($sce) { return function(url) { return $sce.trustAsResourceUrl(url); }; });

Dold text

All hjälp mottages tacksamt från en rutinerad php-utvecklare, men komplett Angular-noob!

MVH
Leo

Av phroggyy
Skrivet av macgyverswe:

Ja det gick att förstå någolunda. Hur lång tid skulle du uppskatta allt det här kommer att ta att koda?

Det beror helt på vem som gör det. Tar du en junior-utvecklare (som jag är) skulle jag väl uppskatta det till kanske en dags arbete. Då inklusive uppladdning av bilder i ett lösenordsskyddat admin interface. Om en helt ny programmerare istället ska ge sig in på det tar det betydligt mycket längre tid. Om jag tänker tillbaka något år till när jag kände mig rätt osäker på PHP så skulle jag då kanske ha kunnat sitta med det några dagar.

Sen använder ju jag, och majoriteten av alla professionella utvecklare med något ramverk för att effektivisera och snabba upp arbetet. Ramverk är dock ingenting man ska ge sig in på förrän man förstår programmeringsspråket som ligger till grund för ramverket.

Om du dock aldrig har skrivit HTML/CSS/PHP (eller .net om man föredrar det) så kan det ju ta ett tag då du måste lära dig att skriva koden i ovannämnda.

Av phroggyy
Skrivet av macgyverswe:

Har inget html eller något skriver då jag inte vet vart jag ska börja men vill ha det som ett galleri med en enkel funktion för att ladda upp bilderna gör det enklaste möjliga och så att jag som nybörjarebnybörjare klarar det mvh

Skickades från m.sweclockers.com

Alright, mitt tips är att du tar en titt på HTML och PHP. Därefter kan du börja bygga galleriet. Nedan kommer jag dock outlina ungefär den struktur jag skulle ha använt.

Struktur

Först och främst har vi bilderna. Vi sparar alla bilder i en mapp som vi kallar 'uploads' som ligger i web-rooten.

Sedan måste vi börja tänka på hur vi ska komma åt alla dessa bilder på vår hemsida... Det lättaste är helt enkelt att man har en databas. I vår databas skapar vi en tabell för alla bilder, 'images', där vi sparar bildernas adresser (t ex '/uploads/bild.jpg').

Nu är första delen färdig, då kan man börja bygga sidstrukturen. För att komma åt våra bilder behöver vi nu bara ansluta till databasen, hämta alla adresser från vår 'images' tabell, och sedan gå igenom alla adresser och lägga in en bild och en rösta-knapp för vardera.

Rösta-knappen blir bara en länk som i en bråkdels sekund skickar användaren till en sida som kör ett röstningsskript varefter man skickas tillbaka till galleriet.

Men då kommer ju frågan: hur gör vi för att spara alla röster?! – Här kan vi använda vår databas igen. Vi skapar en tabell, 'votes' t ex, som ska hålla koll på en bild och en ip-adress. För att sedan rösta på en viss bild låter vi vårt skript ansluta till databasen, och lägga in en ny rad innehållande id:t på den bild man röstar på, samt användarens ip-adress i vår 'votes' tabell. För att sedan räkna rösterna för en viss bild behöver vi bara räkna antalet rader i tabellen som är kopplade till en viss bild.

Hoppas detta gick att förstå sig på någorlunda.

MVH
Leo

Av phroggyy
Skrivet av macgyverswe:

Hej alla

som ni ser är jag väldigt ny här men skulle behöva hjälp med att skapa en omröstnings funsion till en hemsida med ett bild galleri där man bara ska kunna rösta en gång per ip address.
det ska vara enkelt.
handlar om ca 50 bilder som ska kunna röstas på . enkelt och smidigt.

Hej och välkommen!

Kan skriva ett väldigt utförligt svar, men det skulle vara bra om du berättade hur systemet ser ut i nuläget – är allt skrivet i HTML, eller använder du kanske en databas (t ex MySQL) och ett serverspråk (t ex PHP) för att hämta in bilderna? Det blir lättast att hjälpa dig om jag får lite mer information

Av phroggyy

[PHP] Effektiv databassökning med relevanssortering

Goddag SweClockers!

Håller på att skriva en sökfunktion för produktsökning och har lite svårt för att komma på hur jag ska göra för att mest resurseffektivt söka igenom databasen med flera termer, och sedan sortera dessa efter antal matchade söktermer. Dvs om jag har en produkt som har ett antal attribut, t ex

  • namn

  • färg

  • tillverkare

och jag sedan söker på "svart kingston" så vill jag först få upp de resultat som matchar båda orden, för att sedan få upp det som matchar endast ett av orden. Finns det någon bra och resurseffektiv lösning på detta om man vill söka igenom flera kolumner och sedan få ut resultaten i den ordning jag vill? Jag kan komma på ett jäkligt ineffektivt sätt vilket skulle vara att söka igenom varje kolumn efter första termen, sedan skapa en array av detta vilken man söker igenom med andra termen, lägg dessa resultat i en ny array, sök igenom med nästa term etc... Problemet är att detta ju blir sjukt ineffektivt så jag tänker att det måste finnas bättre sätt.

Om det är till någon hjälp använder jag Laravel som framework.

Mycket möjligt att det bara är jag som har varit dålig på att googla...

MVH
Leo

Av phroggyy
Skrivet av Kebabhyvlarn:

Tycker fonten är för ljus/smal för den vita bakgrunden. Har svårt att riktigt läsa texten.

Jo, jag har märkt att det inte riktigt funkar på alla skärmar...