Images spielen eine große Rolle bei der Entwicklung und Verteilung von Anwendungen. Größe und Sicherheit von Images sind in diesem Sinne sehr wichtig. Große Images bringen viele Performance- und Sicherheitsprobleme zusammen. Wenn die Imagegröße zunimmt, wird die Anwendung spät bereit sein und später starten.
Seit der ersten Version von Docker wurden beim Imagegröoße viele Fortschritte gemacht. Mit der mehrstufigen Image-Erstellung konnte die Größe der Images stark reduziert werden. Aber es gab noch Imagegrößeprobleme und Sicherheitsrisiken, da beim Erstellen des Images Referenz Images (FROM #Imagename) benutzt wurde. Große Unternehmen haben zahlreiche Studien durchgeführt. Am Ende wurde der Meinung angenommen, unnötige Teile zu entfernen, die für die Anwendung nicht notwendig sind. In diesem Sinne waren Alpine- und Slim-Image eine ziemliche Revolution. Mit der Distrolessimages von Google hat die Imagewelt andere Dimension gewonnen. Denn die Distroless-Images sind sehr klein, fast leer. Distroless Images haben kein Betriebssystem. Distroless statische Images enthalten wenige, aber sehr notwendige Befehle. Aus diesem Grund sind Distroless-Images sehr klein, und da sie kein Betriebssystem haben, gibt es kaum oder gar keine Sicherheitslücke.
Merhaba dostlar. Dil öğrenimi uzun zaman alan bir süreçtir ve öğrenim sırasında ufak tefek seylere takılmak motivasyon kaybına yol açabilmektedir. Motivasyonu en cok bozan seyin basinda ise tek tek sözlükten kelime anlamina bakmak, sonra az ileride ayni kelimenin anlamina tekrar bakmak, ve unutursan daha ileride tekrar bir kez daha bakmak oldukça can sıkıcı. Iste bu yüzden bu ceviri sürecini asgari düzeye indirmek dil öğrenimi sirasinda oldukça motivasyonunuzun artmasini saglayacaktir.
Bu yazida Transover, Google Translate, Sesli Sözlük, Kindle Cloud Reader Translate eklentileri yani sira farkli ortamlarda (Calibre Epub viewer, Amazon Cloud Reader, Cloud ortamlar…) pratik ceviri yapabilmenizi saglayacak bilgiler sunulacaktir.
Şimdi sizlere alternatif olarak kullandığım eklenti ve uygulamalari tanitmak istiyorum. Belki benzer arayışlarda olan birilerine katkım olur.
Bu yazida DTO (Data transfer Object) seklinde bilinen veri transfer nesnelerinin Spring Boot uygulamalarinda ne kadar elzem olduguna deginmeye calisacagim.
Somut bir örnek üzerinden meseleyi anlatmak gerekirse projemdekiPost, Category ve Comment tablolari icin Entity iliskilerine bakalim.
Post Entity sinifimiz:
packageblog.model;importlombok.*;importorg.hibernate.annotations.CreationTimestamp;importorg.hibernate.annotations.GenericGenerator;importorg.hibernate.annotations.UpdateTimestamp;importjavax.persistence.*;importjavax.validation.constraints.NotBlank;importjavax.validation.constraints.Size;importjava.io.Serializable;importjava.util.*;@Getter@Setter@NoArgsConstructor@ToString(exclude={"user","comments","categories"})@EqualsAndHashCode(exclude={"user","comments","categories"})@Entity@Table(name="post")publicclassPostimplementsSerializable{@Id@GeneratedValue(generator="uuid")@GenericGenerator(name="uuid",strategy="uuid")@Column(columnDefinition="CHAR(32)")privateStringid;@NotBlank(message="title is mandatory")@Size(max=100)@Column(name="title",unique=true,nullable=false)privateStringtitle;@NotBlank(message="content is mandatory")@Lob@Column(name="content",nullable=false)privateStringcontent;@Column(name="is_published")privateBooleanisPublished=false;@CreationTimestamp@Temporal(TemporalType.TIMESTAMP)@Column(name="created_at")privateDatecreatedAt;@UpdateTimestamp@Temporal(TemporalType.TIMESTAMP)@Column(name="updated_at")privateDateupdatedAt;@ManyToOne(fetch=FetchType.LAZY)@JoinColumn(name="user_id",nullable=false)privateUseruser;@OneToMany(mappedBy="post",fetch=FetchType.LAZY,cascade=CascadeType.ALL,orphanRemoval=true)privateList<Comment>comments=newArrayList<>();publicvoidaddComment(Commentcomment){comments.add(comment);comment.setPost(this);}publicvoidremoveComment(Commentcomment){comments.remove(comment);comment.setPost(null);}publicvoidremoveAllComments(){for(Commentcomment:newArrayList<>(comments)){removeComment(comment);}}@ManyToMany(fetch=FetchType.LAZY,cascade={CascadeType.PERSIST,CascadeType.MERGE})@JoinTable(name="post_category",joinColumns=@JoinColumn(name="post_id"),inverseJoinColumns=@JoinColumn(name="category_id"))privateSet<Category>categories=newHashSet<>();publicvoidaddCategory(Categorycategory){categories.add(category);category.getPosts().add(this);}publicvoidremoveCategory(Categorycategory){categories.remove(category);category.getPosts().remove(this);}publicvoidremoveAllCategories(){for(Categorycategory:newArrayList<>(categories)){removeCategory(category);}}publicPost(Stringtitle,Stringcontent,Useruser){this.title=title;this.content=content;this.user=user;}}
Bir site yapiyoruz. Sitede anasayfa bilesenleri,yönetim paneli ve ek olarak 404 sayfasi var. Normalde app-routing.mudule.ts de component bazli bir routing yapisi kurgulayabiliriz. Fakat sadelik ve kullanim kolayligi acisindan lazy-loading seklinde yüklenen modüler bir yapi kurgulayacagiz. Anasayfa bilesenlerini SiteModule altinda toplayacagiz. Site yönetim ile ilgili bilesenleri ise DashboardModule de toplayacagiz. PageNotFound mesaji icin ise bir component kullanacagiz.
app-routing.mudule.ts dosya icerigimiz su sekildedir:
Görüldügü üzere app-routing.mudule.ts dosyamiz SiteModule ve DashboardModule featured module kullanimi ile oldukca sade bir görünüme kavustu.
Merhaba arkadaşlar. Bu yazımda zebkit javascript kütüphanesini tanıtacağım.
Zebkit, canvas üzerine HTML5 öğeleri çizmenizi sağlayan MVC tabanlı bir javascript kütüphanesidir. Adı çok duyulmamış olmasına karşın HTML5 elemanlarının çizimi ve sunumunda oldukça güçlü ve maharetlidir. HTML5 elemanlarını çizimini yapmanın yanı sıra designer moduyla bu elemanların canvas üzerinde sürükle bırak ile yeniden konumlandırabiliyorsunuz. Tek sayfa uygulamalara ve mobil uygulamalara da destek veren Zebkit hiyerarşik kullanımı ile nesneye yönelik yazılımın tadını almanızı sağlıyor.
zebkit.require("ui","layout",function(ui,layout){...// create panel with border layout managervarpanel=newui.Panel(newlayout.BorderLayout());// add button component at the top part of the containerpanel.add("top",newui.Button("Button"));// add text area component to occupy central part of the // containerpanel.add("center",newui.TextArea("Text area"));...});
Zebkit bir Fabric.js kadar bilinir değildir. Fakat konu HTML5 şekilleri çizimi noktasına geldiğinde birçok anlamda ihtiyacınızı Fabric.js’den daha fazla karşılayacaktır. Oldukça gelişmiş dokümantasyona sahip olan Zebkit dokümantasyonu da oldukça gelişmiştir. Siyah ve beyaz teması ve özelleştirmeye açık yapısı Zebkit’in tercih edilebilirliğini artırmaktadır.
Eğer canvas kullanrak bir proje geliştirecekseniz ve HTML5 elemanlarının oldukça sık kullanıldığı, icabında designer ekranında bu HTML5 öğelerini konumlandırabileceğiniz bir yapı geliştirmek istiyorsanız Zebkit sizin için çok uygun bir seçim olabilir.
Zebkit büyük bir proje olmasına karşın geliştirici/destek veren kitle biraz sınırlı kalmış gibi gözükmekte (şuan Andrei Vishneuski öncülüğünde proje ilerliyor) fakat kütüphaneyi kullanırken karşılaştığınız sorunlarınızı açtığınız hata raporları ile bildirmeniz durumunda kısa sürede cevap almaktasınız.
Merhaba arkadaşlar. Uzun süre drupal ile haşır neşir olmuş biri olarak artık ben de Jekyll ile yazı yazanlardan biriyim.
Drupal benim ilk olmasa da sevdiğim göz ağrılarımdan biriydi:) Ne varki drupal ile site geliştirmek ve daha da iyisini geliştirme çabaları esas amacın yani yazı yazmanın önüne geçti. En son edindiğim tecrübeler ile artık Github Pages üzerinde Jekyll statik site üretici kullanarak web sitemi geliştirme konusunda karar kıldım ve iyi de yaptığımı düşünüyorum:)
Merhaba arkadaşlar. Bugün TUTEV‘in Ankara’daki python seminerine katıldım. Tabi amacım derinlemesine bir giriş değil sadece bir keşif, farkındalığımı artırmaya yönelik bir serüvendi.
Seminer başladı ben de merak içinde acaba python’un hangi özelliklerine değinilecek, onu öne çıkaracak neler tarzı sorular kafam bunlarla meşgul. Derken beklediğim gibi olmadı, daha çok katılımcıların düşüncelerini paylaştığı bir tarzda gerçekleşti -giriş için yine de idare eder-.
Merhaba arkadaşlar. Bu yazıda sizlere Windows tabanlı bir içerik yönetimi olan Composite C1‘den bahsedeceğim. Bildiğiniz üzere şuan piyasada irili ufaklı onlarca içerik yönetim sistemi var gerek ücretli gerekse ücretsiz. Peki o kadar içerik yönetim sistemi arasından Composite C1’in dikkatimi çekmesindeki sebepler ne? İşte bu yazıda Composite C1’i tercih sebebi yapabilecek özelliklere değineceğim