精华内容
下载资源
问答
  • DSLs IN ACTION书中的附录: ... DSL-friendly features Scala的DSL特色代码速查表 DSL-friendly features of Scala Scala is an object-functional language that runs on the JVM.

    DSLs IN ACTION书中的附录:

    A cheat sheet for Scala’s DSL-friendly features

    Scala的DSL特色代码速查表


    DSL-friendly features of Scala

    Scala is an object-functional language that runs on the JVM. It has great interoperability with Java by virtue of having the same object model (and more). Scala has a nice, concise syntax, offers type inference, and a whole bunch of mechanisms for designing abstractions based on a combination of OO and functional paradigms.

    Scala是运行在JVM下的一门面向对象语言。它与Java有很好的互操作性,因为有同样的对象模型(和其他很多方面)。Scala有好的,简明的语法,提供的类型推断, 为了抽象设计的一大堆 基于面向对象和函数式范例的机制

    Class-based OOP

    Scala is OO. You can define classes that have instance variables and methods.
    But besides being a class, a Scala abstraction can be of many other types, each with its own set of features and applicability.
    We’re going to look at most of them in this appendix.
    When you design a DSL using Scala, it’s common to model the entities of your domain as classes or as any of the other ways to group related functionalities.
    For details about class definition syntax, refer to [1] in section D.2.

      class Account(val no: Int, val name: String) {
        def balance: Int = {
        //.. implementation
        }
        //..
      }

    A class definition can take parameters.
    In this snippet, val implies that no and name are immutable and cannot be reassigned.
    balanceis a method that you can define. It doesn’t take any argument and returns anInt.

    Case classes (样例类)

    You can add the word case before a class definition and get a lot of mileage out of the abstraction that the compiler generates.

    It’s called a case class in Scala. For a case class, the compiler automatically does the following:
    • Converts the constructor arguments into
    immutable vals. You can explicitly specify varto decide otherwise.
    • Implements equals,hashCode, and
    toString methods to the class.
    • Lets you invoke a shorthand notation for the
    constructor. You don’t need to specify the keywordnew while instantiating an object of the class.
    The compiler gives you a companion object that contains the apply() constructor and an extractor on the constructor arguments.

    Case classes are also useful for pattern matching.
    They’re the most idiomatic way to implement algebraic data types in Scala.
    Because of the built-in features of immutability that case classes offer, they’re often used to build immutable value objects when designing DSLs.

      abstract class Term
      case class Var(name: String) extends Term
      case class Fun(arg: String, body: Term) extends Term

    For this case class definition, you can instantiate as val p = Var("p") , without having to explicitly specify new.

    Traits (特质)

    Traits are yet another way to specify abstractions in Scala.
    They’re similar to Java interfaces in that you can leave out the  implementation for concrete classes.
    But unlike interfaces, you can specify partial implementations of some methods in a trait.
    Traits offer a way to implement mixins in Scala and can also be used to design the correct way to use multiple inheritance.

      trait Audit {
        def record_trail {
        //... implementation
        }
        def view_trail // open
      }
      class SavingsAccount extends Account with Audit {
      //...
      }

    Traits are a great way to design open reusable abstractions without committing to a specific implementation.
    Note how in this definition, the method view_trail is kept open for implementation by the abstraction that mixes in the trait
    .

    Higher-order functions & closures (高阶函数 & 闭包)

    In Scala, functions are first-class values, and you can pass a function as an argument to yet another function.
    You can also have a function return another function.
    Functions as first-class values give Scala the main power for functional programming.
    Higher-order functions make code less verbose and express the correct verb semantics of your DSL.
    Closures let you write fewer classes and objects and more functional artifacts.


      val hasLower = bookTitle.exists(_.isLowerCase)
     def foo(bar: (Int, Int)=>Int) {
      //...
     }
    In the first example, the method exists takes a function as an argument that it applies to each
    character of the string.
    In Java, this would’ve been way more verbose.
    The second example shows the literal syntax of a function in Scala.

    Pattern matching  (模式匹配)

    Like all functional programming languages, Scala has pattern matching.
    You can match arbitrary expressions with a first-match-wins policy in Scala.
    Case classes and pattern matching are a potent combination for implementing functional idioms in Scala.
    You can implement an extensible Visitor pattern using case classes.
    As you see in chapter 6, pattern matching plays an important role in making expressive business rules.

      def foo(i: Int) = i match {
      case 10 => //..
      case 12 => //..
      case _ =>
     }
    The previous rendering is a more concise Scala version of Java’s switch/case statement. But pattern matching has many other uses.
      val obj = doStuff()
      var cast:Foo = obj match {
        case x:Foo => x
        case _ => null
      }
    The earlier example is a more idiomatic way of implementing an instanceOf check used in Java.
      trait Account
      case class Checking(no: Int) extends Account
      case class Savings(no: Int, rate: Double) extends Account
        def process(acc: Account) = acc match {
          case Checking(no) => // do stuff
          case Savings(no, rt) => // do stuff
        }
    Case classes can be used directly for pattern matching.
    Note that earlier I said that case classes implement extractors by default.

    Objects as modules (对象)

    Objects define executable modules in Scala.
    After you define abstractions using classes and traits, you can compose them together into
    a concrete abstraction using the object syntax.
    Object syntax is the closest approximation of statics that are used in Java.
      object RuleComponent extends Rule with CountryLocale with Calendar {
       //..
     }

    RuleComponent is a singleton object created out of the specified abstractions



    Implicit arguments (隐含变量)

    You can leave out the last argument of a function by declaring it to be implicit.
    (方法最后的变量可以被忽略,声明它作为一个隐含的变量。)
    The compiler will look for a matching argument from the enclosing scope of the function.
    (编译器
    从方法域内找到一个匹配的变量。)
      def shout(at: String)(implicit curse: String) {
       println("hey: " + at + " " + curse)
     }
     implicit val curse = "Damn! "
     shout("Rob")

    The compiler will complain if it can’t find a matching argument from the enclosing scope.
    (如果域内没有匹配的变量
    ,编译器会抛出异常。)

    Implicit type conversions (aka Pimp My Library) (隐式类型转化)

    You can extend existing libraries without making any changes to them by using implicit type conversions.
    (可以通过使用隐式类型转换扩展存在的库。)
    It works much like Ruby monkey patching, but it’s controlled within the lexical scope.
    Martin Odersky named this the Pimp My Library pattern (see [2] in section D.2).
    The implicit conversion function is automatically applied by the compiler.
    (编译器自动应用这种隐式转换方法。)
    This helps you make your legacy abstractions smart with improved APIs.

     class RichArray[T](value: Array[T]) {
       def append(other: Array[T]): Array[T] = {
       //.. implementation
       }
     }
     implicit def enrichArray[T](xs: Array[T]) = new RichArray[T]

    The implicit definition of enrichArray serves as the conversion function from Array to RichArray.
    (隐式定义
    enrichArray的作用是把Array转换成RichArray的方法.)

    Partial functions (偏函数)

    A partial function is one that's defined only for a set of values of its arguments.
    偏函数只是定义变量中的一系列值。(偏函数只对变量中一部分值有作业。)
    Partial functions in Scala are modeled as blocks of pattern-matching case statements.
    (Scala中的偏函数是一个模式匹配块。)
    PartialFunctions are used idiomatically to define the message receive loop in Scala actors.
    (在Akka中,偏函数通常惯用的去定义消息接收循环。)

      val onlyTrue: PartialFunction[Boolean, Int] = {
       case true => 100
     }

    onlyTrue is a PartialFunction that’s defined for a limited domain.
    It’s defined only for the Boolean value true.
    The PartialFunction trait contains a method isDefinedAt that returns true for the domain values for which the PartialFunction is defined.
    Here’s an example:
     scala> onlyTrue isDefinedAt(true)
     res1: Boolean = true
     scala> onlyTrue isDefinedAt(false)
     res2: Boolean = false

    Generics & type parameters (泛型 & 类型变量)

    Scala offers type parameters that you specify as part of your class and method declarations.
    (Scala提供类型变量作为class和method声明的一部分。)
    You can also specify explicit constraints on these types that your abstraction will honor.
    (可以指定这些类型的明确约束,你的抽象会兑现。)
    You get an automatic level of constraint checking by the compiler without having to write a single line of validation logic.
    (可以通过编译器获得自动水平的约束检测,而不需要写一行验证逻辑。)
    With Scala, you can abstract many of your DSL constraints within the type system
    .
    (通过Scala,在类型系统中你可以抽象出许多DSL约束。)
      class Trade[Account <: TradingAccount](account: Account) {
       //..
     }

    In this class definition, you won’t be able to create an instance of  Trade with an account that doesn’t satisfy the specified constraint.
    (在这个class定义中,你不能创建这样一个Trade实例-使用一个
    不能让指定的约束满意的account。)


    展开全文
  • Friendly URL Guide Line

    2014-06-09 19:58:38
    (for example, /Products/Menswear/Shirts/Red), so your visitor can guess the parent category’s URL. 5.Be case-insensitive (someone might want to type in the URL from a printed page). The ASP.NET...

    URLs should be short, easy to type, hackable (human-editable), and persistent, and they should

    visualize site structure

    1. Design URLs to describe their content, not the implementation details of your

    application. 

    Use /Articles/AnnualReport rather than /Website_v2/CachedContentServer/FromCache/AnnualReport.

    2. Prefer content titles over ID numbers. 

    Use /Articles/AnnualReport rather than /Articles/2392.

    3. Do not use file name extensions for HTML pages 

    (for example, .aspx or .mvc), but do use them for specialized file types (such as .jpg, .pdf, and .zip).

    4.Create a sense of hierarchy 

    (for example, /Products/Menswear/Shirts/Red), so your visitor can guess the parent category’s URL.

    5.Be case-insensitive (someone might want to type in the URL from a printed page).
    The ASP.NET routing system is case-insensitive by default.

    6.Avoid symbols, codes, and character sequences. 

    If you want a word separator, use a dash (as in /my-great-article). 

    Underscores are unfriendly, and URL-encoded spaces are bizarre (/my+great+article) or disgusting (/my%20great%20article).

    7.Do not change URLs. 

    Broken links equal lost business. When you do change URLs, continue to support the old URL schema for as long as possible via permanent (301) redirections.

    8.Be consistent. Adopt one URL format across your entire application

    展开全文
  • CDN SSL TLS Security

    2019-09-11 20:43:59
     For mobile users, the performance improvement by session resumption means a much more reactive and battery-life-friendly surfing experience. Enable TLS False Start  - when a visitor is ...

    What are the security risks to a CDN?

    Like all networks exposed to the internet, CDNs must guard against man-in-the-middle attacksdata breaches, and attempts to overwhelm the network of the targeted origin server using DDoS attacks. A CDN can have multiple strategies for mitigating vulnerabilities including proper SSL/TLS encryption and specialized encryption hardware.

    What is SSL/TLS encryption?

    Transport Layer Security (TLS) is a protocol for encrypting data that is sent over the Internet. TLS grew out of Secure Sockets Layer (SSL), the first widely-adopted web encryption protocol, in order to fix most of the earlier protocol’s security flaws. The industry still uses the terms somewhat interchangeably for historical reasons. Any web site that you visit starting with https:// rather than http:// is using TLS/SSL for communication between a browser and a server.

    Proper encryption practices are a necessity in order to prevent bad actors from accessing important data. Because the Internet is designed in such a way that data is transferred across many locations, it is possible to intercept packets of important information as they move across the globe. Through the utilization of a cryptographic protocol, only the intended recipient is able to decode and read the information and intermediaries are prevented from decoding the contents of the transferred data.

    The TLS protocol is designed to provide 3 components:

    1. Authentication - The ability to verify the validity of the provided identifications
    2. Encryption - The ability to obfuscate information sent from one host to another
    3. Integrity - The ability to detect forgery and tampering

    What is an SSL Certificate?

    To enable TLS, a site needs an SSL certificate and a corresponding key. Certificates are files containing information about the owner of a site, and the public half of an asymmetric key pair. A certificate authority (CA) digitally signs the certificate to verify that the information in the certificate is correct. By trusting the certificate, you are trusting that the certificate authority has done its due diligence.

    SSL/TLS error graphic

    Operating systems and browsers typically have a list of certificate authorities that they implicitly trust. If a web site presents a certificate that is signed by an untrusted certificate authority, the browser warns the visitor that something could be afoot.

    Certificates and the way they are implemented can also be independently rated based on strength, protocol support and other characteristics. Ratings can change over time as newer, better implementations become available or other factors result in reduction of overall security of a certification implementation. If an origin server has an older lower grade SSL security implementation it will typically be graded more poorly and may be vulnerable to compromise.

    A CDN has the added benefit of providing security to visitors of properties hosted within its network using a CDN provided certificate. Because visitors connect to only the CDN, an older or less secure certificate in use between the origin server and the CDN will not affect the client’s experience.

    SSL/TLS self-signed diagram

    Realistically, this weaker server-to-edge security still represents a vulnerability and should be avoided, especially given the ease with which it is possible to upgrade the security of an origin server by using free origin encryption.

    SSL/TLS self-signed diagram

    Proper security is also important to organic search; encrypted web properties result in stronger ranking on Google search.

    An SSL/TLS connection operates differently than a traditional TCP/IP connection. Once the initial stages of the TCP connection have been made, a separate exchange occurs to set up the secure connection. This article will refer to the device requesting the secure connection as the client and the device serving up the secure connection as the server, as is the case with a user loading a webpage encrypted with SSL/TLS.

    First the TCP/IP handshake is made in 3 steps:

    1. The client sends a SYN packet to the server in order to initiate the connection.
    2. The server than responds to that initial packet with a SYN/ACK packet, in order to acknowledge the communication.
    3. Finally, the client returns an ACK packet to acknowledge the receipt of the packet from the server. After completing this sequence of packet sending and receiving, the TCP connection is open and able to send and receive data.

    TCP 3-way handshake diagram

    Once the TCP/IP handshake has occurred, the TLS encryption handshake begins. The detailed processes behind a TLS handshaking implementation are beyond the scope of this guide. Instead we will focus on the core purpose of the handshake and the time required to complete the process.

    From a high level, there are three main components to a TLS handshake:

    1. The client and the server negotiate TLS versions and the type of cryptography cipher to be used in the communication.
    2. The client and server take steps to ensure mutually authentic communication.
    3. A key is exchanged to be used in future encrypted communications.

    In the diagram below, each of the steps involved in a TCP/IP handshake and a TLS handshake are visualized. Keep in mind that each arrow represents a separate communication which must travel physically between the client and the server. Since the total number of messages back and forth are increased when using TLS encryption, web page load times are increased.

    SSL/TLS handshake diagram

    For illustrative purposes it can be said the TCP handshake takes about 50ms, the TLS handshake may take about 110ms. This is largely a result of the time it takes for data to be sent both ways between the client and server. The idea of round-trip time (RTT), which is the amount of time it takes for information to travel from one device to another and back again, can be used to quantify how “expensive” a connection is to create. If left unoptimized and without the use of a CDN, additional RTT represents an increase in latency and a reduction in load time for end-users. Luckily, there are optimizations that can be made to improve total load time and reduce the number of trips back and forth.

    How can SSL latency be improved?

    SSL optimizations can reduce RTT and improve page load time. Here are 3 of the ways a TLS connection can be optimized:

    TLS Session Resumption - a CDN can keep a connection alive between the origin server and the CDN network for longer by resuming the same session for additional requests. Keeping the connection alive saves time spent renegotiating the connection between the CDN and the origin server when the client requires an uncached origin fetch. As long as the origin server receives additional requests while the connection to the CDN is maintained, additional visitors to the site will experience lower latency.

    session resumption real time infographic

    The overall cost of a session resumption is less than 50% of a full TLS handshake, mainly because session resumption only costs one round-trip while a full TLS handshake requires two. Additionally, a session resumption does not require any large finite field arithmetic (new sessions do), so the CPU cost for the client is almost negligible compared to that in a full TLS handshake. For mobile users, the performance improvement by session resumption means a much more reactive and battery-life-friendly surfing experience.

    session resumption CPU time infographic

    Enable TLS False Start - when a visitor is viewing the site for the first time, the session resumption mentioned above will not be helpful. TLS False Start allows the sender to send application data without a complete TLS handshake.

    SSL/TLS False Start handshake diagram

    The False Start does not modify the TLS protocol itself, it only modifies the timing in which data is transferred. Once the client begins the key exchange, encryption can be assured and data transfer begins. This modification reduces the total number of roundtrips, cutting down the latency required by 60ms.

    Zero Round Trip Time Resumption (0-RTT) - 0-RTT allows for session resumption without addition RTT latency added to the connection. For resumed connections using TLS 1.3 and 0-RTT, connection speed is improved, leading to a faster and smoother web experience for web sites that users visit regularly. This speed boost is especially noticeable on mobile networks.

    0-RTT is an effective improvement, but isn’t without some security tradeoffs. To overcome the risk of what’s known as a replay attack, a CDN service may implement restriction on the type of HTTP requests and the allowed parameters. To learn more, explore an introduction to 0-RTT.

    CDN Protection from DDoS attacks

    One of the most substantial security vulnerabilities of web properties on the modern Internet is the use of distributed denial-of-service (DDoS) attacks. Over time DDoS attacks have increased in size and complexity, with attackers utilizing botnets to target websites with attack traffic. A large and properly configured CDN has the potential benefit of scale as a protective factor against DDoS; by having enough data center locations and sizable bandwidth capabilities, a CDN is able to withstand and mitigate an amount of incoming attack traffic that would easily overwhelm the targeted origin server.

    展开全文
  • Attention-grabbing animations to focus your visitor's attention on specific elements. Tutorials Step-by-step lessons that will guide you through all the Angular functionalities. Easy ...

    Material Design for Bootstrap (Angular version)

    Angular Bootstrap UI KIT

    Built with Angular 7, Bootstrap 4 and TypeScript. CLI version available.

        

    4.9 / 5( 97 reviews )


    400+ material UI elements, 600+ material icons, 74 CSS animations, SASS files, templates, tutorials and many more.Free for personal and commercial use.

    DOWNLOAD  LIVE DEMO 


    Trusted by 800,000+ developers & designers

    Nike - logo

    Amazon - logo

    Sony - logo

    Samsung - logo


    Watch our "5 min Quick Start" tutorial

     

    Bootstrap 4

    Thanks to MDB you can take advantage of all feature of newest Bootstrap 4.

    Detailed documentation

    We give you detailed user-friendly documentation at your disposal. It will help you to implement your ideas easily.

    Large community

    More than 500 000 developers around the globe use MDB in their projects. If you have any doubts or questions there is probably a ready answer on our support forum.


    Main features:

    MDB Admin Dashboard displayed on iPad

    Bootstrap 4

    Up-to-date with the latest standards of Bootstrap 4 and all the best it has to offer.

    Angular CLI

    A command line interface handling all the tedious tasks for you out of the box.

    Detailed documentation

    Intuitive and user-friendly documentation, created with a copy-paste approach.

    No jQuery

    Writing your code with pure Angular is now quicker, easier, and cleaner.

    TypeScript

    Superset of JavaScript that compiles to clean JavaScript output.

    Angular 7

    Create smarter and faster Angular apps with the latest official Angular release.

    MDB Admin Dashboard displayed on iPad


    Not enough?

    Free for personal and commercial use

    How and why you create your projects is absolutely up to you, for free.

    400+ UI elements

    All the necessary and crucial page elements along with attention enchaining ones.

    600+ icons

    Scalable, vector icons perfect for any purpose you can imagine.

    Fully responsive

    Your design will be displayed exactly in the same, perfect way on any device.

    MDB Magazine Template displayed on iPhone

    70+ CSS animations

    Attention-grabbing animations to focus your visitor's attention on specific elements.

    Tutorials

    Step-by-step lessons that will guide you through all the Angular functionalities.

    Easy installation

    Spend your time on creating, not setting up with thanks to a few steps installation.

    Easy to use and customize

    How you mold your design is limited only by your own imagination.

    MDB Admin Dashboard displayed on iPad

    Are you ready to start a 5-minute installation?

     

    LET'S START!

    ...and even more:

    Cross-browser compatibility

    Works perfectly with Chrome, Firefox, IE, Safari, Opera and Microsoft Edge.

    Frequent updates

    Expect any bugs being fixed in a matter of days.

    Active community

    MDB is broadly used by professionals on multiple levels, who are ready to aid you.

    Useful helpers

    Reduce the frequency of highly repetitive declarations in your CSS

    Modularity

    Use TypeScript modules to compile package adjusted to your needs.

    Technical support

    Every day we help our users with their issues and problems.

    Flexbox

    Full support of Flexbox layout system lets you forget about alignment issues.

    SASS files

    Thought-out .scss files come in a compile-ready form.

    MDB website displayed on iPad

    MDB website displayed on laptop

    MDB website displayed on iPhone

    Newsletter  Affiliate program  Contact     

    展开全文
  • Parsing C++ in Python with Clang

    千次阅读 2014-05-16 11:21:56
    , and Clang’s API is C++ – which is not the most high-level hacking friendly language out there, to say the least. libclang Enter libclang . Not so long ago, the Clang team wisely ...
  • A first-time visitor to your page may have to make several HTTP requests, but by using the Expires header you make those components cacheable. This avoids unnecessary ...
  • Java笔试题集锦

    千次阅读 2014-07-23 22:31:51
    Command(命令模式), Interpreter(解释器模式), Visitor(访问者模式), Iterator(迭代子模式), Mediator(调停者模式), Memento(备忘录模式), Observer(观察者模式), State(状态模式...
  • 一些面试题

    千次阅读 2014-03-01 19:33:08
    1、一个".java"源文件中是否可以包括多个类(不是内部类)?有什么限制?  可以有多个类,但只能有一个public的类,并且public的类名必须与文件名相一致。 2、Java有没有goto?  java中的保留字,现在没有在java中...
  • 从享受生活的角度上来说:“程序员并不是一种最好的职业,我认为两种人可以做程序员,第一,你不做程序员,你就没有什么工作可做,或者说是即使有可以做的工作但是你非常不愿意去做;第二,你非常痴迷和爱好程序,...
  • web2py官方文档翻译03

    2019-01-31 00:36:00
    session.visitor_name = request.vars.visitor_name redirect(URL('second')) return dict() def second(): return dict() 然后修改“默认/第一。 html”观点: {{extend 'layout.html'}} What is your name?...
  • Google C++ Style Guide

    千次阅读 2011-08-18 18:34:46
    Google C++ Style Guide http://google-styleguide.googlecode.com/svn/trunk/cppguide.xml Google C++ Style Guide Revision 3.180 Benjy We
  • Best Practices for Speeding Up Your Web Site

    千次阅读 2010-10-21 10:58:00
    visitor to your page may have to make several HTTP requests, but by using the Expires header you make those components cacheable. This avoids unnecessary ...
  • 在本系列的最后一篇我们将用invokedynamic指令来实现Java多分派。 既然Java本身未提供生成invokedynamic指令的接口,...我们将继续使用本系列第一篇中的Friendly接口家族。基本思路是:把那个最简单的Main类(也...
  • -----------edit------------- After looking at this code...it can be improved...to be more thread friendly Delete this var _Browser: ICefBrowser; change this TNotifyVisitor = procedure(aBrowser: ...
  • American Hospitality

    2007-08-17 00:04:00
    A report consistently brought back by visitors to the US is how friendly, courteous, and helpful most Americans were to them. To be fair, this observation is also frequently made of Canada and
  • enhancement - added print option to the Printer Friendly page enhancement - restructured the admin canned message input for easier use new feature - "visitor rank" added to help identify highly ...
  • <p>I'd like a code to check if the referrer URL of a visitor to my Website is registered on a list, so then it ... else { alert("You came from a non friendly Webstie"); } ?> </code></pre> </div>
  • (So why is it “more important” to also focus attention on making your websites or blogs mobile-friendly?) Well. First, if you use WordPress, it’s incredibly easy. Simply install the WordPress ...
  • Web servers can determine the IP address of each visitor. With this info, we can lookup the "owner" of the IP (usually a service provider) using a WHOIS utility and also run a reverse DNS which can ...
  • Moreover, no extensible and developer-friendly system frameworks are available for location and smart applications. Developers do not have any testbed or prototype system available for them to play ...
  • 为移动浏览器设置重定向到网站的移动版本 (Setting up a Redirect for mobile browsers to the mobile version of the website) Redirecting a visitor to a mobile friendly version of your website can offer ...
  • If on the other hand you would prefer to develop your own mobile friendly or device specific theme for your visitors, Any Mobile Theme Switcher can be used to trigger the use of a specific theme when ...
  • 错字3 - 由id实现

    2014-08-22 09:39:57
    <p>The link takes the visitor to the specific page, but this link is in the url as well. Of course I generate this linke exactly like this: <pre><code>$GLOBALS['TSFE']->baseURL . "index....
  • 6 DEVELOPING AN SEO-FRIENDLY WEBSITE 181 Making Your Site Accessible to Search Engines 181 Creating an Optimal Information Architecture (IA) 188 Root Domains, Subdomains, and Microsites 204 ...
  • A mobile-friendly website) A mobile-friendly or responsive website is a necessity in today’s online market. The main reason for this is the fact that users spend more time online on their phones ...
  • Design pattern FAQ Part 2

    2014-03-17 17:09:02
    state pattern, strategy pattern, visitor pattern, adapter pattern and fly weight pattern Part 4 Design Pattern FAQ's --  bridge pattern, composite pattern, decorator pattern, Façade pattern, ...
  • The management of event_types is outside the scope of this article, but it’s trivial (and fast) to join the counter table to a table containing event metadata such as its human-friendly name. ...
  • 联系表格和WordPress数据库(幕后) (Contact Form and the WordPress Database (Behind the Scenes)) When a visitor submits a contact form on your WordPress site, the most prominent visible action that you ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,214
精华内容 485
关键字:

friendlyvisitor