Algorithmic Analysis
Quicksort is usually fast
Although Quicksort has worst-case O(n2) behaviour, it is usually fast: assuming random pivot selection, there's a very large chance we pick some number that separates the input into two similarly sized subsets, which is exactly what we want to have.
In particular, even if we pick a pivot that creates a 10%-90% split every 10 splits (which is a meh split), and a 1 element - n−1 element split otherwise (which is the worst split you can get), our running time is still O(nlogn) (note that this would blow up the constants to a point that Merge sort is probably faster though).
Quicksort is usually faster than most sorts
Quicksort is usually faster than sorts that are slower than O(nlogn) (say, Insertion sort with its O(n2) running time), simply because for large n their running times explode.
A good reason why Quicksort is so fast in practice compared to most other O(nlogn) algorithms such as Heapsort, is because it is relatively cache-efficient. Its running time is actually O(nBlog(nB)), where B is the block size. Heapsort, on the other hand, doesn't have any such speedup: it's not at all accessing memory cache-efficiently.
The reason for this cache efficiency is that it linearly scans the input and linearly partitions the input. This means we can make the most of every cache load we do as we read every number we load into the cache before swapping that cache for another. In particular, the algorithm is cache-oblivious, which gives good cache performance for every cache level, which is another win.
Cache efficiency could be further improved to O(nBlogMB(nB)), where M is the size of our main memory, if we use k-way Quicksort. Note that Mergesort also has the same cache-efficiency as Quicksort, and its k-way version in fact has better performance (through lower constant factors) if memory is a severe constrain. This gives rise to the next point: we'll need to compare Quicksort to Mergesort on other factors.


--- layout: post title: Don't be afraid of harnessing SQL post_id: 170 categories: - essays and rants date: 2006-11-07 13:55:00.000000000 -07:00 author: Jamis permalink: 2006/11/7/don-t-be-afraid-of-harnessing-sql.html ---
Even after ten years of working with SQL, I still find myself tickled by how powerful it is, in spite of its warts.
In Basecamp, users can create to-do list “templates”. Each template is essentially just a name, an optional description, and a bunch of items. Once defined, users can create new to-do lists based on one of these templates.
We used to do this entirely via the ActiveRecord helper methods. First, we’d create a new list, and then creating the items for the list one at a time, for each item in the template. It looked something like this:
1 2 3 4 5 6 7 8 9 10 11 |
class TodoListTemplate < ActiveRecord::Base has_many :todo_item_templates def instantiate list = TodoList.create(:name => name, :description => description) todo_item_templates.each do |item| list.todo_items.create :content => item.content end list end end |
This worked, but was very inefficient. It results in a lot of SQL statements being sent down the pipe, mostly because we’ve got some before_create
hooks and observers set up that perform work for each new to-do item that is created. As our traffic grew, we started running into deadlock issues. All those hooks and observers, so convenient at the time, were now wreaking havoc on the database.
The problem was easily solved. First of all, a little thought helped me see that those hooks and observers were either not needed in this case, or could be done slightly differently. Secondly, instead of copying each item template to an item, one at a time, we could do it all in SQL, as a single statement. Here’s more or less how we rewrote it:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
def instantiate list = TodoList.create(:name => name, :description => description) TodoItem.connection.insert <<-SQL, "Populating items" INSERT INTO todo_items (todo_list_id, content, position, created_at) SELECT #{list.id}, content, position, UTC_TIMESTAMP() FROM todo_item_templates WHERE todo_list_template_id = #{id} SQL list.todo_items.reset list end |
Basically, the INSERT
takes the associated SELECT
statement, and inserts the results of each returned row into the todo_items
table. Not only is this blazing fast, but it is much nicer to the database.
Once everything has been inserted, we call todo_items.reset
, to force the todo_items
association on the list to be unloaded, and then we return the list.
Your own situation may require more or less logic than this. You may even be completely fine doing everything via ActiveRecord. But if you find your application beginning to flounder in places where you are doing lots of database queries, consider rethinking those areas to consolidate some of that work.
Don’t be afraid of harnessing SQL.


About
I am a second year master’s student in Information Systems at Northeastern University specializing in data analytics, data integration , business intelligence and a keen interest in data science.
Recently I completed my co-op as a Data Engineer at SentinelOne( a Cybersecurity company ) wherein I worked closely with the R&D department and my work involved data integration, reporting and building dashboards and product improvement and development.
I also have two years of professional experience in the field of Information Technology gathering, analyzing the business requirements and producing software applications at Accenture. Working in an agile paced environment with bi-weekly sprints, helped me focus on being result-oriented and have proven potential to achieve business objectives through analytical strategy and critical thinking. Through these experiences, I have actively communicated with stakeholders to build and maintain cross-functional relationships.
Looking for an opportunity to work in a challenging position combining my skills in Data, which provides professional development, interesting experiences and personal growth.
Professional Experience
- Designed and developed data pipelines between SentinelOne and enterprise security ecosystem using python scripting for 1M records and also to support open-source intelligence integration into the company’s console using REST API’s and web scraping.
- Formulated custom SQL queries to find, analyze and validate the threats using data in Redash and in deep visibility console.
- Implemented new functionalities and fixed bugs of the product Ranger and executed proof of concept processes that enabled to identify the shortcomings in the product.
- Led the creation of reporting and dashboards visualization team to build real time threat intelligence dashboards in Tableau and PowerBI upwards 8M records, integrating data from multiple data sources and optimized fetch time using parameterization.
- Worked on Product adoption and usage analysis using python and built dashboards to help the business stakeholders make decisions to make products more efficient and determine products’ popularity among current users.
- Technologies: Python, REST API, Tableau, Microsoft PowerBI, AWS Redshift, AWS S3 , Docker , Redash
- Designed, developed and enhanced existing software modules for the client using SAP ABAP and COBOL.
- Spearheaded requirement analysis between the client and project in agile environment.
- Implemented SQL queries to extract data from staging tables and prepared technical design document for data profiling.
- Automated supervisory tasks such as retriggering of delivery notes to the stores, providing user level access to various applications, monitoring of critical jobs utilizing RPA reducing turnaround time and cost by 24%.
- Developed reports and interactive dashboards using Tableau for business activity monitoring to track the supply chain retail sales.
- Technologies: SAP ABAP, COBOL, Tableau , MySQL , Python , RPA
Projects
- Technologies: Python, Flask, Tableau, AWS
- Designed and developed digital marketing analytics tool to determine business loss for a company based on Customer Lifetime Value and Churn rate KPI’s and constructed the entire data pipeline framework on AWS.
- Developed a predictive model that estimated the new customer conversion probability percentage based on previous customers data which yielded in an accuracy score of 85.3%.
- Deployed the tool using Flask framework on AWS EC2 instance as a web application.
- Technologies: Python
- Analyzed and sampled data set of over 2.2M rows and 145 columns using various data wrangling techniques.
- Implemented LASSO Regression to filter irrelevant features and accounted for class imbalance using SMOTE.
- Tuned and tested classifiers such as random forest, SVM and evaluated model performance using Precision-Recall curve.
- Technologies: Java Swing, Netbeans, DBO4
- Built a Java Swing application using ecosystem model which manages resources and responsibilities for dealing with all humanitarian aspects of emergencies, response and recovery to lessen the impact of disasters.
- Integrated Google maps to locate the disaster site, allowing nearest organizations to serve the victims and Email/SMS alert feature to notify registered volunteers to help at the affected disaster sites.
- Technologies: Python
- Gathered data of Amazon stock from yahoo finance and created visualization to understand the data better.
- Created an ensemble of statistical methods, machine learning models and neural network based prediction models for price estimation with least error, and generated trading signals using strategies such as Bollinger bands, Double crossover with evaluating risk and Sharpe ratio.
- Implemented an image captioning model using Inception V3 Network and LSTM Generators for Flickr 8k Datasets.
- Used a pre-trained Inception V3 architecture to derive an encoded representation of the images to be used for image caption generator.
- Handled text data, tokenized using NLP and mapped each feature to label and created dataset.
- Built deep learning network having embedded and LSTM layer to predict the caption of image with accuracy of 83%
- Pre-processed Yelp review dataset and performed data analysis on 5 million (4GB) restaurant reviews.
- Developed an unsupervised machine learning model that generates subtopics using LDA topic modelling which was used to calculate aspect-based rating for a restaurant based on sentiment analysis of each reviews.
Skills
Languages and Databases
Libraries and Frameworks
Data Visualization and ETL
Other
Education
Boston, United States
Degree: Master of Science in Information Systems
GPA: 3.72/4.0
- Designing Data Architecture and Business Intelligence
- Database Management and Design
- Digital Marketing Analytics
- Machine Learning in Finance
- Data Science Engineering Methods and Tools
- Advance Data Science
Relevant Courseworks:
Visvesvaraya Technological University
Bangalore, India
Degree: Bachelor of Engineering in Information Science
- Data Structures
- Database Management and Design
- Data Warehousing and Data Mining
- Programming the Web
- Software Engineering
Relevant Courseworks:
Testimonials
"Purvang is a flexible problem solver. His curiosity paired with his collaborative nature makes him ideal Data Engineer. At SentinelOne he worked cross-functionally with multiple technical and business teams and drove alignment across solutions to complex problems. He is fluent in System Architecture, Data Modeling, ML and Analysis methods, yet can also roll up his sleeves to build and ship solutions in a production code environment. He also has seamlessly jumped across multiple challenging domains including Network Security, IoT, Security Operations, Malware, and Threat Intelligence. Purvang is at the top of my list for people I would turn to for any analytics project I run and I would jump at the opportunity to work with him again." -Mike Petronaci(Product@SentinelOne)
"Purvang proved to be one of the most committed professionals through his work at SentinelOne . He has a very strong work ethic and unparalleled data analytic and problem solving abilities. I would recommend him with any project that requires the very best in Engineering execution. Give him the really challenging tasks, the ones that everyone else is struggling with, and he will get them done. On account of his mature approach to his responsibilities, I often thought of Purvang as a professional I could always rely upon to get the job done. He is an asset to any business." - Eli Cnaan(Senior Software Architect@SentinelOne)
Contact
I am currently looking for full-time opportunities in the field of data! If you know of any positions available, if you have any questions, or if you just want to say hi, please feel free to contact me at:


Know your Fella
Знај си ја фелата
Netcetera Spring Seminar, 04-06.04.2014 Bitola
by @lzivanov
Instead of intro
Do you know who this is?
Novak Djokovic
Do you know who this is?
Steve Jobs
Do you know who this is?
Mark Zuckerberg
What about this girl?
Iris Classon
What about this guy?
Rob Ashton
What about this madam?
Linda Rising
How come we know all those guys?
Visibility
Virtually everywhere
How come we DON'T know all those techies?
More than 10 Million developers in the world!
It's not about fame, it's about recognition
How to get to know those persons?
Awareness?
Information?
Experience?
You have to search for them,
and recognize ones when you find them.
Let's see how are we standing?
http://bit.ly/knowfella
How it works?
Here is the question
- Choice 1
- Choice 2
- Choice 3
- Choice 4
1. Warmup: Who is this guy?
- Alan Cox
- Dennis Ritchie
- Richard Stallman
- Jeff Makey
2. Who invented Java?
- Joshua Bloch
- Kent Beck
- Rod Johnson
- James Gosling
3. Who created Tomcat?
- James Todd
- James Duncan Davidson
- Tim Funk
- Jason Hunter
4. Can you identify the authors of this book?
- Martin Fowler
- Erich Gamma
- Ralph Johnson
- Richard Helm
5. Who is this guy?
- Scott Hanselman
- Scott Guthrie
- Scott Alen
- Scott Gonzalez
6. Who is the creator of jQuery?
- Dave Methvin
- Rick Waldron
- Yehuda Katz
- John Resig
7. Who is the inventor of Git?
- Matt Mackall
- Linus Torvald
- Martin Pool
- Junio Hamano
8. Who are the authors of Pragmatic Programmer?
- Dave Thomas
- Andy Hunt
- Rober C. Martin
- Ward Cunningham
9. Who is the inventor of Rails?
- Yukhikiro Matsumoto
- Jason Fried
- Chad Fowler
- David Heinemeier Hanson
10. Who is the current leader of jug.mk?
- anikov
- ipenov
- mmitresk
- pcavkovs
Results
What can we learn?
1. Warmup: Who is this guy?
2. Who invented Java?
3. Who created Tomcat?
4. Can you identify the authors of this book?
5. Who is this guy?
6. Who is the creator of jQuery?
7. Who is the inventor of Git?
8. Who are the authors of Pragmatic Programmer?
9. Who is the inventor of Rails?
10. Who is the current leader of jug.mk?
THE END
Thank you for engagement.


hxScout currently supports profiling Haxe C++ applications (targetting Windows, Mac OS X, Linux, Android, iOS, and more.) The application under test (AUT) simply includes the hxtelemetry library, which sends telemetry data to hxScout over a socket, allowing for both local (e.g. same computer) and remote (e.g. android phone) profiling.
Please note that hxScout is in beta - some features are partially implemented, others are planned, there are probably bugs, and APIs will likely change. Please submit any feedback (comments, bugs, feature requests) to me via Twitter or github.
hxScout Version: 0.2 Beta, ~4MB (Haxe version, SWF profiling unstable)
Since hxScout and hxtelemetry are currently in beta, profiling Haxe applications reuires some adjustment to your haxe environment. Applications under test (AUTs) must be built against my github forks of hxcpp (integration branch) and hxtelemetry (master branch). OpenFL-based apps must be built against my fork of openfl (hxt_prototyping branch) which was tested with lime 2.3.3.
If changing your haxe environment is too much hassle, you can download and try a compiled demo application, just to see how profiling works. Availalble for windows, mac, and linux. Run the demo app with -a to enable object allocation tracking (can cause performance issues).
Simply launch hxScout, then launch the AUT. If telemetry data doesn't start showing up, verify the AUT was built with the proper libs and flags, and that network communication over socket port 7934 is open from the AUT to hxScout.
To generate telemetry data, applications under test must:
Example apps are given in the hxtelemetry/test directory. The HxTelemetry object can be configured as shown in some examples.
Multi-threading note: hxtelemetry is designed to work with multi-threaded apps. Each thread should instantiate an hxtelemetry object and call advance_frame. See my multi-threaded test.
If you're developing a framework (e.g. OpenFL, Snow, heaps, etc) and want telemetry built in for easy access for your users, review my changeset for how I'm doing it for OpenFL and shoot me a tweet. My DisplayingABitmap test (which is also the demo AUT above) is an OpenFL testcase that uses this modified framework, with a special consideration that it will provide an API compatible with Flash's Telemetry API.
Adobe Scout, Adobe® AIR®, and Adobe® Flash® are either registered trademarks or trademarks of Adobe Systems Incorporated in the United States and/or other countries.
hxScout is not affiliated with Adobe Systems Incorporated. hxScout is licensed under the MIT license.


ssh
Module
Module Summary
Description
Interface module for the ssh application.
See ssh(6) for details of supported version, algorithms and unicode support.
OPTIONS
The exact behaviour of some functions can be adjusted with the use of options which are documented together with the functions. Generally could each option be used at most one time in each function call. If given two or more times, the effect is not predictable unless explicitly documented.
The options are of different kinds:
- Limits
which alters limits in the system, for example number of simultaneous login attempts.
- Timeouts
which give some defined behaviour if too long time elapses before a given event or action, for example time to wait for an answer.
- Callbacks
which gives the caller of the function the possibility to execute own code on some events, for example calling an own logging function or to perform an own login function
- Behaviour
which changes the systems behaviour.
DATA TYPES
Type definitions that are used more than once in this module, or abstractions to indicate the intended use of the data type, or both:
- boolean() =
true | false
- string() =
[byte()]
- ssh_daemon_ref() =
opaque() - as returned by ssh:daemon/[1,2,3]
- ssh_connection_ref() =
opaque() - as returned by ssh:connect/3
- ip_address() =
inet::ip_address
- subsystem_spec() =
{subsystem_name(), {channel_callback(), channel_init_args()}}
- subsystem_name() =
string()
- channel_callback() =
atom() - Name of the Erlang module implementing the subsystem using the ssh_channel behavior, see ssh_channel(3)
- key_cb() =
-
atom() | {atom(), list()}
atom() - Name of the erlang module implementing the behaviours ssh_client_key_api or ssh_client_key_api as the case maybe.
list() - List of options that can be passed to the callback module.
- channel_init_args() =
list()
- algs_list() =
list( alg_entry() )
- alg_entry() =
{kex, simple_algs()} | {public_key, simple_algs()} | {cipher, double_algs()} | {mac, double_algs()} | {compression, double_algs()}
- simple_algs() =
list( atom() )
- double_algs() =
[{client2serverlist,simple_algs()},{server2client,simple_algs()}] | simple_algs()
Exports
Types
Closes an SSH connection.
connect(Host, Port, Options) ->
connect(Host, Port, Options, Timeout) ->
connect(TcpSocket, Options) ->
connect(TcpSocket, Options, Timeout) ->
{ok, ssh_connection_ref()} | {error, Reason}
Types
Connects to an SSH server. No channel is started. This is done by calling ssh_connection:session_channel/[2, 4].
Options:
- {inet, inet | inet6}
-
IP version to use.
- {user_dir, string()}
-
Sets the user directory, that is, the directory containing ssh configuration files for the user, such as known_hosts, id_rsa, id_dsa, and authorized_key. Defaults to the directory normally referred to as ~/.ssh.
- {dsa_pass_phrase, string()}
-
If the user DSA key is protected by a passphrase, it can be supplied with this option.
- {rsa_pass_phrase, string()}
-
If the user RSA key is protected by a passphrase, it can be supplied with this option.
-
{silently_accept_hosts, boolean()}
{silently_accept_hosts, CallbackFun}
{silently_accept_hosts, {HashAlgoSpec, CallbackFun} }
HashAlgoSpec = crypto:digest_type() | [ crypto:digest_type() ]
CallbackFun = fun(PeerName, FingerPrint) -> boolean()
PeerName = string()
FingerPrint = string() | [ string() ] -
This option guides the connect function how to act when the connected server presents a Host Key that the client has not seen before. The default is to ask the user with a question on stdio of whether to accept or reject the new Host Key. See also the option user_dir for the path to the file known_hosts where previously accepted Host Keys are recorded.
The option can be given in three different forms as seen above:
- The value is a boolean(). The value true will make the client accept any unknown Host Key without any user interaction. The value false keeps the default behaviour of asking the the user on stdio.
- A CallbackFun will be called and the boolean return value true will make the client
accept the Host Key. A return value of false will make the client to reject the Host Key and therefore
also the connection will be closed. The arguments to the fun are:
- PeerName - a string with the name or address of the remote host.
- FingerPrint - the fingerprint of the Host Key as public_key:ssh_hostkey_fingerprint/1 calculates it.
- A tuple {HashAlgoSpec, CallbackFun}. The HashAlgoSpec specifies which hash algorithm shall be used to calculate the fingerprint used in the call of the CallbackFun. The HashALgoSpec is either an atom or a list of atoms as the first argument in public_key:ssh_hostkey_fingerprint/2. If it is a list of hash algorithm names, the FingerPrint argument in the CallbackFun will be a list of fingerprints in the same order as the corresponding name in the HashAlgoSpec list.
- {user_interaction, boolean()}
-
If false, disables the client to connect to the server if any user interaction is needed, such as accepting the server to be added to the known_hosts file, or supplying a password. Defaults to true. Even if user interaction is allowed it can be suppressed by other options, such as silently_accept_hosts and password. However, those options are not always desirable to use from a security point of view.
- {disconnectfun, fun(Reason:term()) -> _}
-
Provides a fun to implement your own logging when a server disconnects the client.
- {unexpectedfun, fun(Message:term(), Peer) -> report | skip }
-
Provides a fun to implement your own logging or other action when an unexpected message arrives. If the fun returns report the usual info report is issued but if skip is returned no report is generated.
Peer is in the format of {Host,Port}.
- {pref_public_key_algs, list()}
-
List of user (client) public key algorithms to try to use.
The default value is the public_key entry in ssh:default_algorithms/0.
If there is no public key of a specified type available, the corresponding entry is ignored. Note that the available set is dependent on the underlying cryptolib and current user's public keys.
- {preferred_algorithms, algs_list()}
-
List of algorithms to use in the algorithm negotiation. The default algs_list() can be obtained from default_algorithms/0.
If an alg_entry() is missing in the algs_list(), the default value is used for that entry.
Here is an example of this option:
{preferred_algorithms, [{public_key,['ssh-rsa','ssh-dss']}, {cipher,[{client2server,['aes128-ctr']}, {server2client,['aes128-cbc','3des-cbc']}]}, {mac,['hmac-sha2-256','hmac-sha1']}, {compression,[none,zlib]} ] }
The example specifies different algorithms in the two directions (client2server and server2client), for cipher but specifies the same algorithms for mac and compression in both directions. The kex (key exchange) is implicit but public_key is set explicitly.
WarningChanging the values can make a connection less secure. Do not change unless you know exactly what you are doing. If you do not understand the values then you are not supposed to change them.
- {dh_gex_limits,{Min=integer(),I=integer(),Max=integer()}}
-
Sets the three diffie-hellman-group-exchange parameters that guides the connected server in choosing a group. See RFC 4419 for the function of thoose. The default value is {1024, 6144, 8192}.
- {connect_timeout, timeout()}
-
Sets a time-out on the transport layer connection. For gen_tcp the time is in milli-seconds and the default value is infinity.
- {auth_methods, string()}
-
Comma-separated string that determines which authentication methods that the client shall support and in which order they are tried. Defaults to "publickey,keyboard-interactive,password"
- {user, string()}
-
Provides a username. If this option is not given, ssh reads from the environment (LOGNAME or USER on UNIX, USERNAME on Windows).
- {password, string()}
-
Provides a password for password authentication. If this option is not given, the user is asked for a password, if the password authentication method is attempted.
- {recv_ext_info, boolean()}
-
Tell the server that the client accepts extension negotiation. See Draft-ietf-curdle-ssh-ext-info (work in progress) for details.
Currently implemented extension is server-sig-algs which is the list of the server's preferred user's public key algorithms.
Default value is true.
- {key_cb, key_cb()}
-
Module implementing the behaviour ssh_client_key_api. Can be used to customize the handling of public keys. If callback options are provided along with the module name, they are made available to the callback module via the options passed to it under the key 'key_cb_private'.
- {quiet_mode, atom() = boolean()}
-
If true, the client does not print anything on authorization.
- {id_string, random | string()}
-
The string that the client presents to a connected server initially. The default value is "Erlang/VSN" where VSN is the ssh application version number.
The value random will cause a random string to be created at each connection attempt. This is to make it a bit more difficult for a malicious peer to find the ssh software brand and version.
- {fd, file_descriptor()}
-
Allows an existing file descriptor to be used (by passing it on to the transport protocol).
- {rekey_limit, integer()}
-
Provides, in bytes, when rekeying is to be initiated. Defaults to once per each GB and once per hour.
- {idle_time, integer()}
-
Sets a time-out on a connection when no channels are active. Defaults to infinity.
- {ssh_msg_debug_fun, fun(ConnectionRef::ssh_connection_ref(), AlwaysDisplay::boolean(), Msg::binary(), LanguageTag::binary()) -> _}
-
Provide a fun to implement your own logging of the SSH message SSH_MSG_DEBUG. The last three parameters are from the message, see RFC4253, section 11.3. The ConnectionRef is the reference to the connection on which the message arrived. The return value from the fun is not checked.
The default behaviour is ignore the message. To get a printout for each message with AlwaysDisplay = true, use for example {ssh_msg_debug_fun, fun(_,true,M,_)-> io:format("DEBUG: ~p~n", [M]) end}
connection_info(ConnectionRef, [Option]) ->[{Option,
Value}]
Types
Retrieves information about a connection.
daemon(Port) ->
daemon(Port, Options) ->
daemon(HostAddress, Port, Options) ->
daemon(TcpSocket) ->
daemon(TcpSocket, Options) -> {ok, ssh_daemon_ref()} | {error, atom()}
Types
Starts a server listening for SSH connections on the given port. If the Port is 0, a random free port is selected. See daemon_info/1 about how to find the selected port number.
Please note that by historical reasons both the HostAddress argument and the inet socket option ip set the listening address. This is a source of possible inconsistent settings.
The rules for handling the two address passing options are:
- if HostAddress is an IP-address, that IP-address is the listening address. An 'ip'-option will be discarded if present.
- if HostAddress is loopback, the listening address is loopback and an loopback address will be choosen by the underlying layers. An 'ip'-option will be discarded if present.
- if HostAddress is any and no 'ip'-option is present, the listening address is any and the socket will listen to all addresses
- if HostAddress is any and an 'ip'-option is present, the listening address is set to the value of the 'ip'-option
Options:
- {inet, inet | inet6}
IP version to use when the host address is specified as any.
- {subsystems, [subsystem_spec()]}
-
Provides specifications for handling of subsystems. The "sftp" subsystem specification is retrieved by calling ssh_sftpd:subsystem_spec/1. If the subsystems option is not present, the value of [ssh_sftpd:subsystem_spec([])] is used. The option can be set to the empty list if you do not want the daemon to run any subsystems.
- {shell, {Module, Function, Args} | fun(string() = User) - > pid() | fun(string() = User, ip_address() = PeerAddr) -> pid()}
-
Defines the read-eval-print loop used when a shell is requested by the client. The default is to use the Erlang shell: {shell, start, []}
- {ssh_cli, {channel_callback(), channel_init_args()} | no_cli}
-
Provides your own CLI implementation, that is, a channel callback module that implements a shell and command execution. The shell read-eval-print loop can be customized, using the option shell. This means less work than implementing an own CLI channel. If set to no_cli, the CLI channels are disabled and only subsystem channels are allowed.
- {user_dir, string()}
-
Sets the user directory. That is, the directory containing ssh configuration files for the user, such as known_hosts, id_rsa, id_dsa, and authorized_key. Defaults to the directory normally referred to as ~/.ssh.
- {system_dir, string()}
-
Sets the system directory, containing the host key files that identify the host keys for ssh. Defaults to /etc/ssh. For security reasons, this directory is normally accessible only to the root user.
- {auth_methods, string()}
-
Comma-separated string that determines which authentication methods that the server is to support and in what order they are tried. Defaults to "publickey,keyboard-interactive,password"
Note that the client is free to use any order and to exclude methods.
- {auth_method_kb_interactive_data, PromptTexts}
where:
PromptTexts = kb_int_tuple() | fun(Peer::{IP::tuple(),Port::integer()}, User::string(), Service::string()) -> kb_int_tuple()
kb_int_tuple() = {Name::string(), Instruction::string(), Prompt::string(), Echo::boolean()} -
Sets the text strings that the daemon sends to the client for presentation to the user when using keyboar-interactive authentication. If the fun/3 is used, it is called when the actual authentication occurs and may therefore return dynamic data like time, remote ip etc.
The parameter Echo guides the client about need to hide the password.
The default value is: {auth_method_kb_interactive_data, {"SSH server", "Enter password for \""++User++"\"", "password: ", false}>
- {user_passwords, [{string() = User, string() = Password}]}
-
Provides passwords for password authentication. The passwords are used when someone tries to connect to the server and public key user-authentication fails. The option provides a list of valid usernames and the corresponding passwords.
- {password, string()}
-
Provides a global password that authenticates any user. From a security perspective this option makes the server very vulnerable.
- {preferred_algorithms, algs_list()}
-
List of algorithms to use in the algorithm negotiation. The default algs_list() can be obtained from default_algorithms/0.
If an alg_entry() is missing in the algs_list(), the default value is used for that entry.
Here is an example of this option:
{preferred_algorithms, [{public_key,['ssh-rsa','ssh-dss']}, {cipher,[{client2server,['aes128-ctr']}, {server2client,['aes128-cbc','3des-cbc']}]}, {mac,['hmac-sha2-256','hmac-sha1']}, {compression,[none,zlib]} ] }
The example specifies different algorithms in the two directions (client2server and server2client), for cipher but specifies the same algorithms for mac and compression in both directions. The kex (key exchange) is implicit but public_key is set explicitly.
WarningChanging the values can make a connection less secure. Do not change unless you know exactly what you are doing. If you do not understand the values then you are not supposed to change them.
- {dh_gex_groups, [{Size=integer(),G=integer(),P=integer()}] | {file,filename()} {ssh_moduli_file,filename()} }
-
Defines the groups the server may choose among when diffie-hellman-group-exchange is negotiated. See RFC 4419 for details. The three variants of this option are:
- {Size=integer(),G=integer(),P=integer()}
- The groups are given explicitly in this list. There may be several elements with the same Size. In such a case, the server will choose one randomly in the negotiated Size.
- {file,filename()}
- The file must have one or more three-tuples {Size=integer(),G=integer(),P=integer()} terminated by a dot. The file is read when the daemon starts.
- {ssh_moduli_file,filename()}
- The file must be in ssh-keygen moduli file format. The file is read when the daemon starts.
The default list is fetched from the public_key application.
- {dh_gex_limits,{Min=integer(),Max=integer()}}
-
Limits what a client can ask for in diffie-hellman-group-exchange. The limits will be {MaxUsed = min(MaxClient,Max), MinUsed = max(MinClient,Min)} where MaxClient and MinClient are the values proposed by a connecting client.
The default value is {0,infinity}.
If MaxUsed < MinUsed in a key exchange, it will fail with a disconnect.
See RFC 4419 for the function of the Max and Min values.
- {pwdfun, fun(User::string(), Password::string(), PeerAddress::{ip_adress(),port_number()}, State::any()) -> boolean() | disconnect | {boolean(),any()} }
-
Provides a function for password validation. This could used for calling an external system or if passwords should be stored as a hash. The fun returns:
- true if the user and password is valid and
- false otherwise.
This fun can also be used to make delays in authentication tries for example by calling timer:sleep/1. To facilitate counting of failed tries the State variable could be used. This state is per connection only. The first time the pwdfun is called for a connection, the State variable has the value undefined. The pwdfun can return - in addition to the values above - a new state as:
- {true, NewState:any()} if the user and password is valid or
- {false, NewState:any()} if the user or password is invalid
A third usage is to block login attempts from a missbehaving peer. The State described above can be used for this. In addition to the responses above, the following return value is introduced:
- disconnect if the connection should be closed immediately after sending a SSH_MSG_DISCONNECT message.
- {pwdfun, fun(User::string(), Password::string()) -> boolean()}
-
Provides a function for password validation. This function is called with user and password as strings, and returns true if the password is valid and false otherwise.
This option ({pwdfun,fun/2}) is the same as a subset of the previous ({pwdfun,fun/4}). It is kept for compatibility.
- {negotiation_timeout, integer()}
-
Maximum time in milliseconds for the authentication negotiation. Defaults to 120000 (2 minutes). If the client fails to log in within this time, the connection is closed.
- {max_sessions, pos_integer()}
-
The maximum number of simultaneous sessions that are accepted at any time for this daemon. This includes sessions that are being authorized. Thus, if set to N, and N clients have connected but not started the login process, connection attempt N+1 is aborted. If N connections are authenticated and still logged in, no more logins are accepted until one of the existing ones log out.
The counter is per listening port. Thus, if two daemons are started, one with {max_sessions,N} and the other with {max_sessions,M}, in total N+M connections are accepted for the whole ssh application.
Notice that if parallel_login is false, only one client at a time can be in the authentication phase.
By default, this option is not set. This means that the number is not limited.
- {max_channels, pos_integer()}
-
The maximum number of channels with active remote subsystem that are accepted for each connection to this daemon
By default, this option is not set. This means that the number is not limited.
- {parallel_login, boolean()}
-
If set to false (the default value), only one login is handled at a time. If set to true, an unlimited number of login attempts are allowed simultaneously.
If the max_sessions option is set to N and parallel_login is set to true, the maximum number of simultaneous login attempts at any time is limited to N-K, where K is the number of authenticated connections present at this daemon.
WarningDo not enable parallel_logins without protecting the server by other means, for example, by the max_sessions option or a firewall configuration. If set to true, there is no protection against DOS attacks.
- {minimal_remote_max_packet_size, non_negative_integer()}
-
The least maximum packet size that the daemon will accept in channel open requests from the client. The default value is 0.
- {id_string, random | string()}
-
The string the daemon will present to a connecting peer initially. The default value is "Erlang/VSN" where VSN is the ssh application version number.
The value random will cause a random string to be created at each connection attempt. This is to make it a bit more difficult for a malicious peer to find the ssh software brand and version.
- {send_ext_info, boolean()}
-
Send a list of extensions to the client if the client has asked for it. See Draft-ietf-curdle-ssh-ext-info (work in progress) for details.
Currently implemented extension is sending server-sig-algs which is the list of the server's preferred user's public key algorithms.
Default value is true.
- {key_cb, key_cb()}
-
Module implementing the behaviour ssh_server_key_api. Can be used to customize the handling of public keys. If callback options are provided along with the module name, they are made available to the callback module via the options passed to it under the key 'key_cb_private'.
- {profile, atom()}
-
Used together with ip-address and port to uniquely identify a ssh daemon. This can be useful in a virtualized environment, where there can be more that one server that has the same ip-address and port. If this property is not explicitly set, it is assumed that the the ip-address and port uniquely identifies the SSH daemon.
- {fd, file_descriptor()}
-
Allows an existing file-descriptor to be used (passed on to the transport protocol).
- {failfun, fun(User::string(), PeerAddress::ip_address(), Reason::term()) -> _}
-
Provides a fun to implement your own logging when a user fails to authenticate.
- {connectfun, fun(User::string(), PeerAddress::ip_address(), Method::string()) ->_}
-
Provides a fun to implement your own logging when a user authenticates to the server.
- {disconnectfun, fun(Reason:term()) -> _}
-
Provides a fun to implement your own logging when a user disconnects from the server.
- {unexpectedfun, fun(Message:term(), Peer) -> report | skip }
-
Provides a fun to implement your own logging or other action when an unexpected message arrives. If the fun returns report the usual info report is issued but if skip is returned no report is generated.
Peer is in the format of {Host,Port}.
- {idle_time, integer()}
-
Sets a time-out on a connection when no channels are active. Defaults to infinity.
- {ssh_msg_debug_fun, fun(ConnectionRef::ssh_connection_ref(), AlwaysDisplay::boolean(), Msg::binary(), LanguageTag::binary()) -> _}
-
Provide a fun to implement your own logging of the SSH message SSH_MSG_DEBUG. The last three parameters are from the message, see RFC4253, section 11.3. The ConnectionRef is the reference to the connection on which the message arrived. The return value from the fun is not checked.
The default behaviour is ignore the message. To get a printout for each message with AlwaysDisplay = true, use for example {ssh_msg_debug_fun, fun(_,true,M,_)-> io:format("DEBUG: ~p~n", [M]) end}
daemon_info(Daemon) -> {ok, [DaemonInfo]} | {error,Error}
Types
Returns a key-value list with information about the daemon. For now, only the listening port is returned. This is intended for the case the daemon is started with the port set to 0.
default_algorithms() -> algs_list()
Returns a key-value list, where the keys are the different types of algorithms and the values are the algorithms themselves. An example:
20> ssh:default_algorithms(). [{kex,['diffie-hellman-group1-sha1']}, {public_key,['ssh-rsa','ssh-dss']}, {cipher,[{client2server,['aes128-ctr','aes128-cbc','3des-cbc']}, {server2client,['aes128-ctr','aes128-cbc','3des-cbc']}]}, {mac,[{client2server,['hmac-sha2-256','hmac-sha1']}, {server2client,['hmac-sha2-256','hmac-sha1']}]}, {compression,[{client2server,[none,zlib]}, {server2client,[none,zlib]}]}] 21>
shell(Host) ->
shell(Host, Option) ->
shell(Host, Port, Option) ->
shell(TcpSocket) -> _
Types
Starts an interactive shell over an SSH server on the given Host. The function waits for user input, and does not return until the remote shell is ended (that is, exit from the shell).
start() ->
start(Type) -> ok | {error, Reason}
Types
Utility function that starts the applications crypto, public_key, and ssh. Default type is temporary. For more information, see the application(3) manual page in Kernel.
stop() -> ok | {error, Reason}
Types
Stops the ssh application. For more information, see the application(3) manual page in Kernel.
stop_daemon(DaemonRef) ->
stop_daemon(Address, Port) -> ok
Types
Stops the listener and all connections started by the listener.
stop_listener(DaemonRef) ->
stop_listener(Address, Port) -> ok
Types
Stops the listener, but leaves existing connections started by the listener operational.


I want to make battlelog run like as if it where an actual game full screen with menu music. I made it so battlelog opens as an internet explorer kiosk, so it feels like I am actually opening up another program. Can someone make a plugin that plays background music, maybe like the BF2 menu music, in the background, and have it fade out when I connect to a server? And fade back in when I disconnect from a server.
BrainFooLong
Administrator
I can read that you use Internet Explorer, so no chance here.
GameFreakBoy
Just use the Origin in-game browser to load up youtube, pandora, or any other site with music.


Page 2 of 2
Re: New Message Board!
Posted:
Sun Nov 08, 2009 10:48 pm
by ubern00ber
Yeah... it's really just connecting both things to the same database. But it's not exactly quite
that easy... Depends on how the message board handles accounts/database, and whether it can be modified to suit different database needs. I've never made a message board so I can't really comment too much on this...
Re: New Message Board!
Posted:
Mon Nov 09, 2009 4:43 am
by Stick Stickly
Why no FFA? That was one of the best things xentales had going for it. The most hilarious threads were brought up in there. Is casual supposed to be a watered down FFA or something?
Re: New Message Board!
Posted:
Mon Nov 09, 2009 5:27 am
by marzuku
Stick Stickly wrote:Why no FFA? That was one of the best things xentales had going for it. The most hilarious threads were brought up in there. Is casual supposed to be a watered down FFA or something?
i agree that there should be a Free for all, so that players might find this board quite usefull when it comes to finding other stuff and sharing experiences.
Re: New Message Board!
Posted:
Mon Nov 09, 2009 9:15 am
by Glorfindelus
While it did have some funny things, FFA also had more than its share of piles o' bullcrap. We would rather create a gamer community that is a bit more welcome to new players than those that abuse the lack of rules and rant in the..."MENSA Tales"... FFA forum. In reply to stickly: FFA is a casual topic forum with NO RULES, which means all sorts of flaming, personal attacks, and inappropriate content can be posted. Casual would still have the normal rules prohibiting that. You could say it is a watered down FFA, yes.
Re: New Message Board!
Posted:
Mon Nov 09, 2009 9:19 am
by Glorfindelus
I just had an idea I wanted to put past y'all before I put it in the list: How about a forum(s) for
old/large/respected guilds?
Re: New Message Board!
Posted:
Mon Nov 09, 2009 9:32 am
by Stick Stickly
The guild thing is a good idea. As for FFA a new player, if not stupid, would know that that forum has nothing to do with the game, and it's just a place for players to bs while not on the game. Hence free for all. Description could be something a long the lines of "a place for any/many topics not related to the
game can be shared. No racism/sexism or any other types of insults will be tolerated and this forum will be heavily moderated."
Re: New Message Board!
Posted:
Mon Nov 09, 2009 10:15 am
by marzuku
Glorfindelus wrote:I just had an idea I wanted to put past y'all before I put it in the list: How about a forum(s) for
old/large/respected guilds?
Quite like the idea, on WoW people create own websites where people will apply as for a job, where they actually present their CCV(CyberCurriculumVitae, New word)
instead of people creating own websites, guilds whith many members should be able to have the option to create a forum within the Evidyon boards where people can apply.
Re: New Message Board!
Posted:
Mon Nov 09, 2009 11:59 am
by Morn
creating a free message board for your guild is easy. Moderating which guilds should have forums and which are fly-by-night creations would be a headache.
Re: New Message Board!
Posted:
Fri Nov 20, 2009 2:00 am
by strafe of x2
if you are still needing help with some stuff as far as the forum goes just let me know i have a couple friends that do a pretty sweet job
www.vcl-clan.com is like the last one still running but they do that stuff all the time.
Re: New Message Board!
Posted:
Sun Dec 06, 2009 10:58 am
by Morn
Has there been a lag in board development lately? Anything that we can contribute to help it go online?


Toggle navigation
Red Spot
Home
Profile
Notifications
0
Logout
List header
Home
Notifications
Invitations
User Settings


Grey Area
问题描述 :
Figure 1 is an example of histogram automatically produced by his histogram generator.
A histogram is a visual display of frequencies of value occurrences as bars. In this example, values in the interval 0�9 occur five times, those in the interval 10�19 occur three times, and 20�29 and 30�39 once each.
Dr. Grey’s histogram generator is a simple tool. First, the height of the histogram is fixed, that is, the height of the highest bar is always the same and those of the others are automatically adjusted proportionately. Second, the widths of bars are also fixed. It can only produce a histogram of uniform intervals, that is, each interval of a histogram should have the same width (10 in the above example). Finally, the bar for each interval is painted in a grey color, where the colors of the leftmost and the rightmost intervals are black and white, respectively, and the darkness of bars monotonically decreases at the same rate from left to right. For instance, in Figure 1, the darkness levels of the four bars are 1, 2/3, 1/3, and 0, respectively.
In this problem, you are requested to estimate ink consumption when printing a histogram on paper. The amount of ink necessary to draw a bar is proportional to both its area and darkness.
输入:
n w
v1
v2
…
vn
n is the total number of value occurrences for the histogram, and each of the n lines following the first line contains a single value. Note that the same value may possibly occur multiple times.
w is the interval width. A value v is in the first (i.e. leftmost) interval if 0 ≤ v < w, the second one if w ≤ v < 2w, and so on. Note that the interval from 0 (inclusive) to w (exclusive) should be regarded as the leftmost even if no values occur in this interval. The last (i.e. rightmost) interval is the one that includes the largest value in the dataset.
You may assume the following.
1 ≤ n ≤ 100
10 ≤ w ≤ 50
0 ≤ vi ≤ 100 for 1 ≤ i ≤ n
You can also assume that the maximum value is no less than w. This means that the histogram has more than one interval.
The end of the input is indicated by a line containing two zeros.
输出:
n w
v1
v2
…
vn
n is the total number of value occurrences for the histogram, and each of the n lines following the first line contains a single value. Note that the same value may possibly occur multiple times.
w is the interval width. A value v is in the first (i.e. leftmost) interval if 0 ≤ v < w, the second one if w ≤ v < 2w, and so on. Note that the interval from 0 (inclusive) to w (exclusive) should be regarded as the leftmost even if no values occur in this interval. The last (i.e. rightmost) interval is the one that includes the largest value in the dataset.
You may assume the following.
1 ≤ n ≤ 100
10 ≤ w ≤ 50
0 ≤ vi ≤ 100 for 1 ≤ i ≤ n
You can also assume that the maximum value is no less than w. This means that the histogram has more than one interval.
The end of the input is indicated by a line containing two zeros.
样例输入:
3 50 100 0 100 3 50 100 100 50 10 10 1 2 3 4 5 16 17 18 29 30 0 0
样例输出:
0.51 0.26 1.476667
#include <iostream> #include <stdio.h> #include <algorithm> #include <string.h> using namespace std; int n, w; int data[1000]; int interval [1000]; void solve() { int k = 0; double sum = 0.01; sort(data + 1, data + n + 1); while(!(data[n] >= k*w && data[n] <= (k+1)*w-1)) { k++; } memset(interval, 0, sizeof(interval)); for(int i = 1; i <= n; i++) { int kk = 0; while(kk <= k) { if(data[i] >= kk*w && data[i] <= (kk+1)*w-1) { interval[kk] ++; break; } else { kk++; } } } int max = 0; for(int i = 0; i <= k; i++) { if(max < interval[i]) { max = interval[i]; } } for(int i = 0; i <= k; i++) { sum += ((double)interval[i]) / ((double)max) * (k-i) / k; } printf("%.6lf\n", sum); } int main() { while(1) { scanf("%d%d", &n, &w); if(n == 0 && w == 0) { break; } else { for(int i = 1; i <= n; i++) { scanf("%d", &data[i]); } } solve(); } return 0; }
我一点都不想吃
我一点都不想吃
我一点都不想吃
我一点都不想吃
我一点都不想吃
我一点都不想吃
我一点都不想吃
我一点都不想吃
我一点都不想吃
我一点都不想吃
我一点都不想吃
我一点都不想吃
很好，注释很详细啊
51行错了，改为：void Union(struct subset subsets[], int x, int y)
为什么暴力求解方法循环到sqrt(n) 就可以了呢
有点意思
Excellent Web-site! I required to ask if I might webpages and use a component of the net web website and use a number of factors for just about any faculty process. Please notify me through email regardless of whether that would be excellent. Many thanks
对，还是这种实现比较好理解。虽然效率有点低
[…] 答案：http://www.acmerblog.com/interview-2-1549/ […]
第一种方法怎么会是O(log(m+n))呢？没有二分的话直接遍历应该就是O(m+n)吧？
感觉我好像很多都不会做。。。。
妈呀！这个Dijkstra模板好长OwQ！
可以根据二叉排序树的定义进行严格的排序树创建和后序遍历操作。如果形成的排序树相同，其树的前、中、后序遍历是相同的，但在此处不能使用中序遍历，因为，中序遍历的结果就是排序的结果。经在九度测试，运行时间90ms，比楼主的要快。
示例程序中的代码不够稳健，没有考虑到输入了非法字符或者不合理输入的情况。
很好的题，还是能做出几道的，嘿嘿
惊艳了，没想到代码如此简洁


{% extends "shop/base.html" %} {% load i18n %} {% block navbar %}
{% trans "Your password has been set. You may go ahead and log in now." %}
{% trans 'Log in' %}


Project Setup
The first step for any project to use Vagrant is to configure Vagrant using a Vagrantfile. The purpose of the Vagrantfile is twofold:
-
Mark the root directory of your project. A lot of the configuration of Vagrant is relative to this root directory.
-
Describe the kind of machine and resources you need to run your project, as well as what software to install and how you want to access it.
Vagrant has a built-in command for initializing a directory for usage with Vagrant: vagrant init
. For the purpose of this getting started guide, please follow along in your terminal:
$ mkdir vagrant_getting_started
$ cd vagrant_getting_started
$ vagrant init
This will place a Vagrantfile
in your current directory. You can take a look at the Vagrantfile if you want, it is filled with comments and examples. Don't be afraid if it looks intimidating, we'll modify it soon enough.
You can also run vagrant init
in a pre-existing directory to setup Vagrant for an existing project.
The Vagrantfile is meant to be committed to version control with your project, if you use version control. This way, every person working with that project can benefit from Vagrant without any upfront work.


Far far away, behind the word mountains, far from the countries Vokalia and Consonantia, there live the blind texts. Separated they live in Bookmarksgrove right at the coast of the Semantics, a large language ocean. A small river named Duden flows by their place and supplies it with the necessary regelialia. It is a paradisematic country, in which roasted parts of sentences fly into your mouth.
When she reached the first hills of the Italic Mountains, she had a last view back on the skyline of her hometown Bookmarksgrove, the headline of Alphabet Village and the subline of her own road, the Line Lane. Pityful a rethoric question ran over her cheek, then she continued her way.
Far far away, behind the word mountains, far frm the conutries Vikalia and Consonatia, there live the blind texts.
Marketing Manager
Far far away, behind the word mountains, far frm the conutries Vikalia and Consonatia, there live the blind texts.
Marketing Manager
Far far away, behind the word mountains, far frm the conutries Vikalia and Consonatia, there live the blind texts.
Marketing Manager
Far far away, behind the word mountains, far frm the conutries Vikalia and Consonatia, there live the blind texts.
Marketing Manager
Copyright ©2021 All rights reserved | This template is made with by Mohammadullah Jewel


Thin out a sound by reducing the amplitude of partials if their neighbors have a higher amplitude to start with.


{#
#}
{# #}
Has letter been returned?
No
Date of birth
18 March 1956
Address
8 Nevill Way
HoveBN3 7QL
Phone number
0700 248 461
Benefit
Pension Credit


You know that the goal is to allow your body to regenerate, to return to what it was before — maybe a little weaker, maybe a bit more sensitive, but ultimately the same.
You assume your mind is the same way.
You imagine that a hot bath and a mental health day will solve your problems. You think that if you got seriously damaged by an experience in life, the solution is to try to go back to what you were before.
This is not at all how it works, because while your body can recover, your soul has to heal, and there is a difference between the two.
If you’re trying to restore yourself to the person you were before you got hurt, you’re trying to recover. If you’re ready to shed your old self and become someone entirely new, you’re ready to heal.
Recovering means you’re trying to go back to who you were before — the person who did not know better, and got you into that situation to begin with. Recovering means you’re still idolizing and romanticizing life before the traumatic event, you’re still grasping onto the familiar past.
Recovering means that you’re still trying to be someone you used to be, while healing means that you’re stepping into someone entirely new.
You might think that recovering is what’s going to solve your problems, because really, recovering is a lot more comfortable. At the onset, it makes you feel better.
Recovering is a day off and some retail therapy.  Recovering is indulging in something delicious because you deserve it. Recovering is remembering your worth and your power. Recovering is stepping back into what you built before. Recovering is a return.
 Healing is enforcing a strict budget because you have long-term financial aspirations. Healing is restoring relationships instead of just walking away from them. Healing is choosing what nourishes you, not what comforts you. Healing is finding unprecedented worth and power. Healing is stepping into what you’ve never done before. Healing is a rebirth.
So while many of our stresses in life can and often are solved by taking some time to restore ourselves, our big, lingering, overarching, continual, habitual problems are not. We usually avoid them with the exact same behaviors that we use to recover.
Recovering is important, but it isn’t permanent.
Healing is essential, because it lasts forever.
Related
Maybe She’s Growing Distant So She Can Heal
How To Get Over Someone: The Ultimate Guide To Releasing Attachments, Reinventing Yourself, And Opening Your Life To New Love
About the author
Brianna Wiest is the author of I Am The Hero Of My Own Life, Salt Water, and 101 Essays That Will Change The Way You Think. Follow Brianna on Instagram or read more articles from Brianna on Thought Catalog.
Learn more about Thought Catalog and our writers on our about page.
Beautiful Writing Best Of Thought Catalog Healing Recovering Self-Love Self-Worth
- 0
The truth is that you can be struggling and still be loved.
 You just have to show up and try.  You’ll figure out the rest along the way.


This page has hundreds of waypoints rendered, allowing you to test performance - scroll jank, repaints, reflows etc.


{% extends "layout_unbranded.html" %} {% block page_title %} sportplaces.uk {% endblock %} {% block content %} {% include "includes/header_sports_places.html" %} Back Badminton in 'Sports Hall' What do you call this space? Number of courts Maxium number of players per court Cost for one hour {% endblock %}


Reinforcement learning (RL) is an area of machine learning, inspired by behaviorist psychology[citation needed], concerned with how software agents ought to take actions in an environment so as to maximize some notion of cumulative reward. The problem, due to its generality, is studied in many other disciplines, such as game theory, control theory, operations research, information theory, simulation-based optimization, multi-agent systems, swarm intelligence, statistics and genetic algorithms.
Reinforcement learning differs from standard supervised learning in that correct input/output pairs need not be presented, and sub-optimal actions need not be explicitly corrected. Instead the focus is on performance, which involves finding a balance between exploration (of uncharted territory) and exploitation (of current knowledge). The exploration vs. exploitation trade-off has been most thoroughly studied through the multi-armed bandit problem and in finite MDPs.


Historians recognize lesser known Boston Tea Party colonists
by EndPlayWORCESTER, Mass. (AP) - Historians in Massachusetts have recognized two Boston Tea Party participants.
The Telegram & Gazette reports historical reenactors and Boston Tea Party Ships & Museum representatives placed plaques Thursday on the Worcester graves of Peter Slater Jr. and Benjamin Tucker Jr. The museum's Evan O'Brien says they were "just as important to our region's history as Paul Revere, Samuel Adams, John Adams, and John Hancock."
American colonists protesting "taxation without representation" in December 1773 dumped 340 chests of imported tea into Boston Harbor, a key event leading to the American Revolution.
O'Brien says not much is known about the more than 100 believed participants, but a large percentage were common tradesmen, young adults and apprentices. The museum hopes to mark known participants' graves before the event's 250th anniversary in 2023.


Fan-In/Fan-Out - Cloud Backup
Fan-in/fan-out is a more advanced use-case which demonstrates how to write an orchestrator function that calls multiple functions concurrently and then performs some aggregation on the results. In particular, this sample demonstrates how the pattern can be used to create a durable function that backs up all or some of an app's site content into Azure Storage.
Before you begin
If you haven't done so already, make sure to read the overview before jumping into samples. It will really help ensure everything you read below makes sense.
All samples are combined into a single function app package. To get started with the samples, follow the setup steps below that are relevant for your development environment:
For Visual Studio Development (Windows Only)
- Download the VSDFSampleApp.zip package, unzip the contents, and open in Visual Studio 2017 (version 15.3).
- Install and run the Azure Storage Emulator. Alternatively, you can update the
local.appsettings.json
file with real Azure Storage connection strings. - The sample can now be run locally via F5. It can also be published directly to Azure and run in the cloud.
For Azure Portal Development
- Create a new function app at https://functions.azure.com/signin.
- Follow the installation instructions to configure Durable Functions for portal development.
- Download the DFSampleApp.zip package.
- Unzip the sample package file into
D:\home\site\wwwroot
using Kudu or FTP.
The code snippets and binding references below are specific to the portal experience, but have a direct mapping to the equivalent Visual Studio development experience.
This article will specifically walk through the following functions in the sample app:
- E2_BackupSiteContent
- E2_GetFileList
- E2_CopyFileToBlob
Note
This walkthrough assumes you have already gone through the Hello Sequence sample walkthrough. If you haven't done so already, it is recommended to first go through that walkthrough before starting this one.
Scenario overview
In this sample, we write a function which uploads all files under a specified directory recursively into blob storage. We also count the total number of bytes that were uploaded to blob storage as part of the process.
The naive way to implement this solution is to write a single function to take care of everything. The main problem you'll run into is scalability. A single function execution can only run on a single VM, so the throughput will be limited by the throughput of that single VM. Another problem is reliability. If there is a failure midway through, or if the entire process takes more than 5 minutes, then the backup will fail in a partial state and needs to be restarted.
A more robust approach would be to write two regular functions: one which enumerates the files and adds the file names to a queue, and another function which reads from the queue and uploads the files to blob storage. This is better in terms of throughput and reliability, but requires you to provision and manage a queue. More importantly, significant complexity is introduced in terms of state management and coordination if you want to do anything more, like report the total number of bytes uploaded.
A Durable Functions approach gives you all of the mentioned benefits with very low overhead.
The cloud backup orchestration
The E2_BackupSiteContent function uses the standard function.json for orchestrator functions.
{
"bindings": [
{
"name": "backupContext",
"type": "orchestrationTrigger",
"direction": "in"
}
],
"disabled": false
}
Here is the code which implements the orchestrator function:
#r "Microsoft.Azure.WebJobs.Extensions.DurableTask"
public static async Task<long> Run(DurableOrchestrationContext backupContext)
{
string rootDirectory = backupContext.GetInput<string>();
if (string.IsNullOrEmpty(rootDirectory))
{
rootDirectory = Environment.ExpandEnvironmentVariables(@"%HOME%\site\wwwroot");
}
string[] files = await backupContext.CallActivityAsync<string[]>(
"E2_GetFileList",
rootDirectory);
var tasks = new Task<long>[files.Length];
for (int i = 0; i < files.Length; i++)
{
tasks[i] = backupContext.CallActivityAsync<long>(
"E2_CopyFileToBlob",
files[i]);
}
await Task.WhenAll(tasks);
long totalBytes = tasks.Sum(t => t.Result);
return totalBytes;
}
This orchestrator function essentially does the following:
- Takes a
rootDirectory
value as an input parameter. - Calls a function to get a recursive list of files under
rootDirectory
. - Makes multiple parallel function calls to upload each file into Azure Blob Storage.
- Waits for all uploads to complete.
- Returns the sum total bytes that were uploaded to Azure Blob Storage.
The most interesting part of this function is the await Task.WhenAll(tasks);
line. You may have noticed that all the calls to the E2_CopyFileToBlob function were not awaited. This is intentional to allow them to run in parallel. When we pass this array of tasks to Task.WhenAll
, we get back a task which won't complete until all the copy operations have completed. If you're familiar with the Task Parallel Library (TPL) in .NET, then this is not new to you. The difference is that these tasks could be running on multiple VMs concurrently, and the extension ensures that the end-to-end execution is resilient to process recycling.
After awaiting from Task.WhenAll
, we know that all function calls have completed and have returned values back to us. In this case, each call to E2_CopyFileToBlob will return the number of bytes uploaded, so calculating the sum total byte count is a matter of adding all those return values together.
Helper activity functions
The helper activity functions, just as with other samples, are just regular functions that use the activityTrigger
trigger binding. For example, the function.json file for E2_GetFileList looks like the following:
{
"bindings": [
{
"name": "rootDirectory",
"type": "activityTrigger",
"direction": "in"
}
],
"disabled": false
}
And here is the implementation:
#r "Microsoft.Azure.WebJobs.Extensions.DurableTask"
public static string[] Run(string rootDirectory, TraceWriter log)
{
string[] files = Directory.GetFiles(rootDirectory, "*", SearchOption.AllDirectories);
log.Info($"Found {files.Length} file(s) under {rootDirectory}.");
return files;
}
Note
You might be wondering why we couldn't just put this code directly into the orchestrator function. We could, but this would break one of the fundamental rules of orchestrator functions, which is that they should never do I/O, including local file system access.
The function.json for E2_CopyFileToBlob is similarly very simple:
{
"bindings": [
{
"name": "filePath",
"type": "activityTrigger",
"direction": "in"
}
],
"disabled": false
}
The implementation is also pretty straight forward. It happens to use some advanced features of Azure Functions bindings (i.e. the use of the Binder
parameter), but you don't need to worry about those details for the purpose of this walkthrough.
#r "Microsoft.Azure.WebJobs.Extensions.DurableTask"
#r "Microsoft.WindowsAzure.Storage"
using Microsoft.WindowsAzure.Storage.Blob;
public static async Task<long> Run(
string filePath,
Binder binder,
TraceWriter log)
{
long byteCount = new FileInfo(filePath).Length;
// strip the drive letter prefix and convert to forward slashes
string blobPath = filePath
.Substring(Path.GetPathRoot(filePath).Length)
.Replace('\\', '/');
string outputLocation = $"backups/{blobPath}";
log.Info($"Copying '{filePath}' to '{outputLocation}'. Total bytes = {byteCount}.");
// copy the file contents into a blob
using (Stream source = File.Open(filePath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
using (Stream destination = await binder.BindAsync<CloudBlobStream>(
new BlobAttribute(outputLocation)))
{
await source.CopyToAsync(destination);
}
return byteCount;
}
The implementation loads the file from disk and asynchronously streams the contents into a blob of the same name. The return value is the number of bytes copied to storage, which is then used by the orchestrator function to compute the aggregate sum.
Note
This is a perfect example of moving I/O operations into an activityTrigger
function. Not only can the work be distributed across many different VMs, but we also get the benefits of checkpointing the progress, meaning we're able to automatically keep track of which uploads have already completed if the host process gets terminated for any reason.
Running the sample
Using the HTTP-triggered functions included in the sample, you can start the orchestration using the below HTTP POST request.
POST http://{host}/orchestrators/E2_BackupSiteContent HTTP/1.1
Content-Type: application/json
Content-Length: 20
"D:\\home\\LogFiles"
Note
The HttpStart function which you are invoking only works with JSON-formatted content. For this reason, the Content-Type: application/json
header is required and the directory path is encoded as a JSON string.
This will trigger the E2_BackupSiteContent orchestrator and pass the string D:\home\LogFiles
as a parameter. The response will provide a link to get the status of this backup operation:
HTTP/1.1 202 Accepted
Content-Length: 719
Content-Type: application/json; charset=utf-8
Location: http://{host}/admin/extensions/DurableTaskExtension/instances/b4e9bdcc435d460f8dc008115ff0a8a9?taskHub=DurableFunctionsHub&connection=Storage&code={systemKey}
(...trimmed...)
Depending on how many log files you have in your function app, this operation could take several minutes to complete. You can get the latest status by querying the URL in the Location
header of the previous HTTP 202 response.
GET http://{host}/admin/extensions/DurableTaskExtension/instances/b4e9bdcc435d460f8dc008115ff0a8a9?taskHub=DurableFunctionsHub&connection=Storage&code={systemKey}
HTTP/1.1 202 Accepted
Content-Length: 148
Content-Type: application/json; charset=utf-8
Location: http://{host}/admin/extensions/DurableTaskExtension/instances/b4e9bdcc435d460f8dc008115ff0a8a9?taskHub=DurableFunctionsHub&connection=Storage&code={systemKey}
{"runtimeStatus":"Running","input":"D:\\home\\LogFiles","output":null,"createdTime":"2017-06-29T18:50:55Z","lastUpdatedTime":"2017-06-29T18:51:16Z"}
In this case, the function is still running. We are also able to see the input that was saved into the orchestrator state and the last updated time. We can continue to use the Location
header values to poll for completion. Once complete, we can expect to see an HTTP response value similar to the following:
HTTP/1.1 200 OK
Content-Length: 152
Content-Type: application/json; charset=utf-8
{"runtimeStatus":"Completed","input":"D:\\home\\LogFiles","output":452071,"createdTime":"2017-06-29T18:50:55Z","lastUpdatedTime":"2017-06-29T18:51:26Z"}
Now we can see that the orchestration is complete and approximately how much time it took to complete. We now also see a value for the output
field, which indicates that around 450 KB of logs were uploaded.
Wrapping up
At this point, you should have a greater understanding of the core orchestration capabilities of Durable Functions. Subsequent samples will go into more advanced features and scenarios.
Full Sample Code
Here is the full orchestration as a single C# file using the Visual Studio project syntax:
// Copyright (c) .NET Foundation. All rights reserved.
// Licensed under the MIT License. See License.txt in the project root for license information.
using System;
using System.IO;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Host;
using Microsoft.WindowsAzure.Storage.Blob;
namespace VSSample
{
public static class BackupSiteContent
{
[FunctionName("E2_BackupSiteContent")]
public static async Task<long> Run(
[OrchestrationTrigger] DurableOrchestrationContext backupContext)
{
string rootDirectory = backupContext.GetInput<string>()?.Trim();
if (string.IsNullOrEmpty(rootDirectory))
{
rootDirectory = Directory.GetParent(typeof(BackupSiteContent).Assembly.Location).FullName;
}
string[] files = await backupContext.CallActivityAsync<string[]>(
"E2_GetFileList",
rootDirectory);
var tasks = new Task<long>[files.Length];
for (int i = 0; i < files.Length; i++)
{
tasks[i] = backupContext.CallActivityAsync<long>(
"E2_CopyFileToBlob",
files[i]);
}
await Task.WhenAll(tasks);
long totalBytes = tasks.Sum(t => t.Result);
return totalBytes;
}
[FunctionName("E2_GetFileList")]
public static string[] GetFileList(
[ActivityTrigger] string rootDirectory,
TraceWriter log)
{
log.Info($"Searching for files under '{rootDirectory}'...");
string[] files = Directory.GetFiles(rootDirectory, "*", SearchOption.AllDirectories);
log.Info($"Found {files.Length} file(s) under {rootDirectory}.");
return files;
}
[FunctionName("E2_CopyFileToBlob")]
public static async Task<long> CopyFileToBlob(
[ActivityTrigger] string filePath,
Binder binder,
TraceWriter log)
{
long byteCount = new FileInfo(filePath).Length;
// strip the drive letter prefix and convert to forward slashes
string blobPath = filePath
.Substring(Path.GetPathRoot(filePath).Length)
.Replace('\\', '/');
string outputLocation = $"backups/{blobPath}";
log.Info($"Copying '{filePath}' to '{outputLocation}'. Total bytes = {byteCount}.");
// copy the file contents into a blob
using (Stream source = File.Open(filePath, FileMode.Open, FileAccess.Read, FileShare.Read))
using (Stream destination = await binder.BindAsync<CloudBlobStream>(
new BlobAttribute(outputLocation, FileAccess.Write)))
{
await source.CopyToAsync(destination);
}
return byteCount;
}
}
}


My Account Login
Returning Customers
If you are a registered user, please enter your email and password.
email address*
Password*
Login
Forgot Password?
NEW USER
CREATE ACCOUNT


WATCH:This is what Happened when Mnangagwa met Chiwenga
Mnangagwa pays courtesy visit to Chiwenga following return from China
by Philip MangwiroMnangagwa visits Chiwenga, This is what happened when they finally met
Zimbabwe President Emmerson Mnangagwa visited Vice President Chiwenga at his Chisipite residence today. Contrary to social media rumours, Chiwenga and Mnangagwa are in good books and no animosity whatsoever. Check out the video below. Like old and dear friends, the two leaders embraced with Mai Mnangagwa calling Chiwenga by his ‘soko’ totem.
In Other News:
Vice President Constantino Chiwenga returned home today after almost 4 months away as he was battling an undisclosed ailment. The Vice President appeared healthy after returning from China where he was treated by specialists.However, Vice President Constantino Chiwenga’s return has sparked a myriad of reactions in Zimbabweans, especially given that he returned home in a Chinese plane and was actually welcomed by officials from the Chinese Embassy. Members of the ruling Zanu-PF party, however, were curiously absent resulting in frenzied speculation..Read More
MORE FROM IHARARE:
Zimbabweans React To The Return Of Vice President Constantino Chiwenga
“A Coup Begets Another Coup”: Presidential Advisor Warns Of Another Coup In Cryptic Tweet
WATCH: Detailed Video Of VP Chiwenga Being Welcomed Back Home After Months In Hospital
To View and Apply for the latest Jobs and Vacancies in Zimbabwe, Please Visit our Sister website iHarare Jobs


Introduction to Grid
CSS Grid Basic Concepts
CSS Grid is a 2 dimensional system which uses an intersecting set of horizonal and diagonal lines to place and align its child elements. With Grid you have the ability to layer elements, create nested grids, adjust the positioning of entire grouped areas as the viewport resizes and add additional rows or columns when needed.
Elements can be positioned:
- Explictly, using px values, fixed track sizes and precise locations.
- Flexibly, utilizing the grid algorithm, spercentages and fractions to control the document flow.
To get started with Grid, first create a wrapper and change the display to grid, each direct descendant of the wrapper will then become a grid child.
.wrapper
display: grid;
or
display: inline-grid;
Creating Grid Tracks
Explict Grid Tracks
Grid Tracks can define rows and columns within the grid using:
grid-template-columns:
grid-template-rows:
In the first example below, tracks are created by applying an individual value to each required column such as px/fr. The second example shows the use of repeat() notation to generate a specific number of equal sized rows. Both methods can be used on either rows or columns to create an explict grid
grid-template-columns: 200px 1fr 2fr;
grid-template-rows: repeat(3, 1fr);
Automatic Rows
Controlling Automatic Row Spacing
When items extend the specified grid or content needs to flow into new rows, grid will create new rows which are auto-sized to fit their content.
The following examples show how to control this default behaviour:
grid-auto-rows: 300px
grid-auto-rows: minmax(200px, auto)
In the first example above, all rows will conform to the specified height of 300px as they are created. However, by using the minmax() function you can create a more flexible row that will stretch to accomodate the content (auto) whilst not allowing the row to shrink below a specific minimum height, which in this case is 200px.
Positioning Grid Items
Targeting Grid Lines
A simple way to position grid items is line-based placement, the below example shows a grid item using this method to define its position within the grid container
grid-column-start: 1
grid-column-end: 3
grid-row-start: 2
grid-row-end: 3
- Declaration 1. Will place the item at the start of the first vertical grid line
- Declaration 2. States the item will end at the third vertical grid line, so it will span two columns in total from the column start position
- Declaration 3. Will place the item at the start of the second horizonal grid line
- Declaration 4. States the item will end at the third horizonal grid line, spanning one row in total from the row start position
Defining Gutters
Using Grid-Gap Properties
Gutters are easily created within the Grid Container, however browser support does vary and often will need to be vendor prefixed.
When using css grid it is always advisable to check support by visiting caniuse.com. The below shows
four different examples of usage, however in addition to px, percentage or em units you are also able to use both rem and calc() functions to assign values.
grid-column-gap: 10px;
grid-row-gap: 1em;
grid-gap: 10%;
grid-gap: 1em 2em;
- Declaration 1. Uses a fixed px value to create 10px wide column gutters
- Declaration 2. Assigns an em value to create 1em row gutters
- Declaration 3. grid-gap or gap, will assign the specified value to both the row and column gutters
- Declaration 4. Declaring two values on the grid-gap property will assign the first to the row gutter and the second to the column gutter
Reference
All information provided was sourced from MDN Web Docs, Basic Concepts of a Grid Layout.


Maximal number of instances of this template to run, or empty for unlimited.
Note that also those containers (using the same image) are counted which have not been started by Jenkins.


- Arrays
- Queues & Stack
- Trees
- Binary indexed Tree
- heap
- Red black tree
- Trie
- KD tree
- Hash tables
- Linked lists
- Graphs
Algorithms & Data Structures
- Time Complexity
- Cost model
- Order of Growth
- Big O notation
- Space Complexity
- Sorting
- Insertion Sort
- Quick Sort
- Merge Sort
- Heap Sort
- Searching
- Binary Searching
- Breadth First Search
- Depth First Search
- Dijkstra's Algorithm
- String Search
- Hashing


Palisade
Draw lines along the grid edges, in such a way that the grid is divided into connected regions, all of the size shown in the status line. Also, each square containing a number should have that many of its edges drawn in.
Click on a grid edge to mark it as a division between regions (black), and again to return to marking it as undecided (yellow). Right-click on a grid edge to mark it as definitely not part of the loop (faint grey), and again to mark it as undecided again.


It is always so much fun!
Thank you, so Much!
We love to see you have fun!
Double XP for the weekend
Winter Skins Ready
New Hero Coming Soon!!
A look Inside Tranquilo


About
Team
Chemistry
Architecture - Burj Khalifa
Automobiles
Tourism
Space
Game
Medical - Skeleton
Entertainment - Iron Man
Chemistry
Orbital Theory
s-block
p-block
d-block
Lattices
Simple Cubic
Face Centerd Orthorhombic
Body Centered Tetragonal
Body Centered Cubic
Base Centered Orthorhombic
Body Centered Orthorhombic
Face Centered Cubic
Orthorhombic
Tetragonal
Hybridization
SP
SP2
SP3
SP3D
Automobiles
Recon Flyer
Engine
Piston
Bike Engine
Tourism
St Lawrence River North America
Palace Square Russia
Erlangen Germany
Rheingauer Dom Germany
Wroclaw City Poland
Space
Mars Trip
Earth Day-Night Cycle
Earth at Night
Game
Space Attack
Space Ride
Copyright © Akash Design 2017


4:30-5:00: Check in & registration @ Levine Lobby
5:00-6:00: Dinner @ Levine Lobby
6:00-6:45: Intro to GitHub (Tack 1) @ Wu & Chen
Web Dev @ Berger Auditorium (Track 2)
7:00-7:45: Intro to Web Development Part 1 (Track 1) @ Wu & Chen
Intro to Android @ Berger Auditorium (Track 2)
8:00-8:45: Intro to Web Development Part 2 (Track 1) @ Wu & Chen
Intro to Python & Flask @ Berger Auditorium (Track 2)
9:00-9:30: Ice Breakers + Team Formation @ Wu & Chen
9:30: GET HYPE 4 TOMORROW !
8:00-8:30: Check in & registration @ Pennovation Center
8:30-9:00: Breakfast
9:00-9:15: Opening Ceremony
9:15: Hacking begins!
9:30-10:30: How to Prepare for Technical Interviews with Vanguard
10:30-11:30: Computer Graphics: Procedural Shape Generation Workshop
12:00-1:00: Lunch + Careers Panel
1:00-2:00: Intro to iOS Development Workshop
1:00-1:30: The Percentage Project, Inc.: Data-Driven Advocacy
1:30-4:00: Photobooth sponsored by The Percentage Project
2:00-4:00: Friendship Bracelet Making and Candy Bar
2:00-3:00: How to Start your own Hackathon/Initiative with FemmeHacks Founders!
3:00-4:00: Mocktail Bar sponsored by Red Bull
3:00-4:00: Product Management 101 with Microsoft PM
4:00-4:30: Winterfell Boba Break!
4:30-5:30: Talent Show
6:00-7:00 Dinner
7:30 Insomnia Cookies sponsored by Bloomberg
8:30: Hacking ends! SUBMIT YOUR PROJECTS ON DEVPOST!
9:00-9:30: Project Demos
9:30-9:45 Karaoke
9:45-10:30: Closing Ceremony + Awards


public
Type.Speak.Learn
Mongolian
A customized foreign language learning tool - developed to help with my own personal practice of the Mongolian language. Built in Angular using the MEAN stack. Features-to-come include 25 built-in Mongolian words and their English translation, clickable audio playback for each word, the ability to add new Mongolian words to the database and a word translation typing game.


|
NANO100_BSP V3.04.001
The Board Support Package for Nano100BN Series
|
Modules | |
| PDMA Exported Functions | |
Macros | |
| #define | PDMA_WIDTH_8 0x00080000UL |
| #define | PDMA_WIDTH_16 0x00100000UL |
| #define | PDMA_WIDTH_32 0x00000000UL |
| #define | PDMA_SAR_INC 0x00000000UL |
| #define | PDMA_SAR_FIX 0x00000020UL |
| #define | PDMA_SAR_WRA 0x00000030UL |
| #define | PDMA_DAR_INC 0x00000000UL |
| #define | PDMA_DAR_FIX 0x00000080UL |
| #define | PDMA_DAR_WRA 0x000000C0UL |
| #define | PDMA_SPI0_TX 0x00000000UL |
| #define | PDMA_SPI1_TX 0x00000001UL |
| #define | PDMA_UART0_TX 0x00000002UL |
| #define | PDMA_UART1_TX 0x00000003UL |
| #define | PDMA_USB_TX 0x00000004UL |
| #define | PDMA_I2S_TX 0x00000005UL |
| #define | PDMA_DAC0_TX 0x00000006UL |
| #define | PDMA_DAC1_TX 0x00000007UL |
| #define | PDMA_SPI2_TX 0x00000008UL |
| #define | PDMA_TMR0 0x00000009UL |
| #define | PDMA_TMR1 0x0000000AUL |
| #define | PDMA_TMR2 0x0000000BUL |
| #define | PDMA_TMR3 0x0000000CUL |
| #define | PDMA_SPI0_RX 0x00000010UL |
| #define | PDMA_SPI1_RX 0x00000011UL |
| #define | PDMA_UART0_RX 0x00000012UL |
| #define | PDMA_UART1_RX 0x00000013UL |
| #define | PDMA_USB_RX 0x00000014UL |
| #define | PDMA_I2S_RX 0x00000015UL |
| #define | PDMA_ADC 0x00000016UL |
| #define | PDMA_SPI2_RX 0x00000018UL |
| #define | PDMA_PWM0_CH0 0x00000019UL |
| #define | PDMA_PWM0_CH2 0x0000001AUL |
| #define | PDMA_PWM1_CH0 0x0000001BUL |
| #define | PDMA_PWM1_CH2 0x0000001CUL |
| #define | PDMA_MEM 0x0000001FUL |


- The Lord of the Rings: The Fellowship of the Ring (2001)
- The Good, the Bad and the Ugly (1966)
- Pulp Fiction (1994)
- The Lord of the Rings: The Return of the King (2003)
- Schindler's List (1993)
- 12 Angry Men (1957)
- The Dark Knight (2008)
- The Godfather: Part II (1974)
- The Godfather (1972)
- The Shawshank Redemption (1994)


- Uninstall the printer, if already installed from a previous version of OS X, or from previous attempts to install Lexmark's drivers
- Open Finder, click on your HD, find Library/Printers/Lexmark, and rename it to Lexmark.bak
- Reboot
- Insert your Leopard DVD, double-click Optional Installs, double-click Optional Installs.mpkg
- When Optional Installs has loaded, open Printer Drivers, and check the box next to Lexmark, then finish the installation process.
- Open System Preferences, and then Printer and Fax
- Click the + sign to add a new printer
- Your P4350 should show up as "4300 Series Printer" in the list. Select it.
- The dialog may spin for a few minutes. When done, it will enable the driver selection list. Select "4300 Series" from the list and click OK. You should now be able to print. I did this on two different Macs, and it worked for both.


 Learn what it meant to the community, why it matters, and what comes next.
|
|
|
CONTINUE READING
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
EDUCATION MATTERS
|
|
|
|
|
|
|
|
|
The fall 2014 issue of Education Matters is all about momentum, which the UO is really starting to build. This is an exciting time to be part of the COE and the UO, with the announcement of a $2B capital campaign and bold changes in the way we tell our story. Education Matters is distributed each term. Use the e-mail link below to contact the editor; physical letters are always welcome as well.
Manage your subscription
|
|
|
|
|
Published by the
University of Oregon College of Education
|
|
|
|
|
|
Marketing and Communications
College of Education
1215 University of Oregon
Eugene, OR 97403-1215
|
|
|
|
|
|
|
|
|
|
|
|


{% include header.html %}
Home
Getting started
Documentation
Javadoc
Weatherlib
{{ page.topic}}
Latest version
1.5.8
{{ content }}
{{ page.backPage }}
{{ page.nextPage }}
Please enable JavaScript to view the
comments powered by Disqus.
{% include footer.html %}


File
For large binary or text content (database LOB) we can model it
in the entity bean as a property of type java.io.File
and with @Lob
.
@Entity
public class SomeFileBean {
...
@Lob
File content;
Lazy fetched by default
By default all @Lob
properties are fetched lazy so that means
by default they are NOT fetched unless explicit included in the select clause.
Note that File properties (and other Lob properties) will lazy load as needed.
QSomeFileBean b = QSomeFileBean.alias()
SomeFileBean bean =
new QSomeFileBean()
.select(b.name, b.content)
.id.eq(42)
.findOne();
File content = bean.getContent();
Content streamed to file
For each File returned Ebean creates a temporary file and streams the content from the database Lob result into the file. As such when we fetch beans with Files we are expected to process the file in some way and then potentially discard, delete or move the temporary file. If we do not then this can result in a build up of temporary files in the temp directory.
Insert
// have the content as a File
File tempFile = ...;
UserProfile profile = new UserProfile();
profile.setName("Rob");
profile.setProfileImage(tempFile);
database.save(profile);
// typically tidy up file
tempFile.delete();
Fetch
QUserProfile u = QUserProfile.alias()
UserProfile profile =
new QUserProfile()
.select(u.name, u.profileImage)
.id.eq(42)
.findOne();
File image = profile.getProfileImage();
// do something with the image file
// maybe move it to a cache directory
// or tidy up by deleting the temporary file
image.delete();
Stateless update
It is often useful to perform a stateless update where we update the File content without fetching it.
// have the content as a File
File updatedProfileImage = ...;
UserProfile profile = new UserProfile();
profile.setId(42);
profile.setProfileImage(updatedProfileImage);
// perform update without fetching
database.update(profile);
// typically tidy up file
updatedProfileImage.delete();


ReliefWeb - Search Converter
The search converter has moved to
https://reliefweb.int/search/converter


Here's the mockup for reference. Note: you must use the vertical-align
CSS property to solve this quiz. Semantic elements will not pass.
a2 + b2 = c2
Not familiar with the Pythagorean theorem? Take a look at this Wikipedia article to see how this equation should look.
H2 + 3H2 → 2NH3
Not familiar with chemical equations? Take a look at the examples here. (Hint: in the examples, the numbers that immediately follow letters should be subscripts.)
Course Developer
The jumps over the


MedSwarm
New Entry
Graph
Log
New Entry
Lab Date:
Prescription:
Dosage:
Testosterone Levels:
Estrogen Levels:
Personal Log:
Graph
'
Log


You Can Book Now..
This theme features a flexible, UX friendly sidebar menu and stock photos from our friends at Unsplash!
Looks great on any screen size!
Freshly redesigned for Bootstrap 4.
Millions of users Start Bootstrap!
I mustache you a question...


|
BitShares-Core
6.1.0
BitShares blockchain implementation and command-line interface software
|
#include <stddef.h>
Go to the source code of this file.
Variables | |
| constexpr size_t | MAX_ADDRESSES_TO_HANDLE_AT_ONCE = 200 |
| constexpr size_t | MAX_BLOCKS_TO_HANDLE_AT_ONCE = 200 |
| constexpr size_t | MAX_SYNC_BLOCKS_TO_PREFETCH = 10 * MAX_BLOCKS_TO_HANDLE_AT_ONCE |
| #define ENABLE_P2P_DEBUGGING_API 1 |
Define this to enable debugging code in the p2p network interface. This is code that would never be executed in normal operation, but is used for automated testing (creating artificial net splits, tracking where messages came from and when)
Definition at line 36 of file config.hpp.
| #define GRAPHENE_NET_DEFAULT_DESIRED_CONNECTIONS 20 |
Definition at line 60 of file config.hpp.
| #define GRAPHENE_NET_DEFAULT_MAX_CONNECTIONS 200 |
Definition at line 61 of file config.hpp.
| #define GRAPHENE_NET_DEFAULT_P2P_PORT 1776 |
Definition at line 59 of file config.hpp.
| #define GRAPHENE_NET_DEFAULT_PEER_CONNECTION_RETRY_TIME 30 |
Definition at line 42 of file config.hpp.
| #define GRAPHENE_NET_FUTURE_SYNC_BLOCKS_GRACE_PERIOD_SEC (60 * 60) |
We prevent a peer from offering us a list of blocks which, if we fetched them all, would result in a blockchain that extended into the future. This parameter gives us some wiggle room, allowing a peer to give us blocks that would put our blockchain up to an hour in the future, just in case our clock is a bit off.
Definition at line 83 of file config.hpp.
| #define GRAPHENE_NET_MAX_BLOCKS_PER_PEER_DURING_SYNCING 200 |
Definition at line 87 of file config.hpp.
| #define GRAPHENE_NET_MAX_INVENTORY_SIZE_IN_MINUTES 2 |
Definition at line 85 of file config.hpp.
| #define GRAPHENE_NET_MAX_ITEMS_PER_PEER_DURING_NORMAL_OPERATION 1 |
During normal operation, how many items will be fetched from each peer at a time. This will only come into play when the network is being flooded – typically transactions will be fetched as soon as we find out about them, so only one item will be requested at a time.
No tests have been done to find the optimal value for this parameter, so consider increasing or decreasing it if performance during flooding is lacking.
Definition at line 100 of file config.hpp.
| #define GRAPHENE_NET_MAX_NESTED_OBJECTS (250) |
Definition at line 112 of file config.hpp.
| #define GRAPHENE_NET_MAX_TRX_PER_SECOND 1000 |
Definition at line 110 of file config.hpp.
| #define GRAPHENE_NET_MAXIMUM_QUEUED_MESSAGES_IN_BYTES (1024 * 1024) |
Definition at line 63 of file config.hpp.
| #define GRAPHENE_NET_MESSAGE_CACHE_DURATION_IN_BLOCKS 5 |
When we receive a message from the network, we advertise it to our peers and save a copy in a cache were we will find it if a peer requests it. We expire out old items out of the cache after this number of blocks go by.
Recently lowered from 30 to match the default expiration time the web wallet imposes on transactions.
Definition at line 74 of file config.hpp.
| #define GRAPHENE_NET_MIN_BLOCK_IDS_TO_PREFETCH 10000 |
Instead of fetching all item IDs from a peer, then fetching all blocks from a peer, we will interleave them. Fetch at least this many block IDs, then switch into block-fetching mode until the number of blocks we know about but haven't yet fetched drops below this
Definition at line 108 of file config.hpp.
| #define GRAPHENE_NET_PEER_DISCONNECT_TIMEOUT 20 |
Definition at line 52 of file config.hpp.
| #define GRAPHENE_NET_PEER_HANDSHAKE_INACTIVITY_TIMEOUT 5 |
Definition at line 50 of file config.hpp.
| #define GRAPHENE_NET_PROTOCOL_VERSION 106 |
Definition at line 28 of file config.hpp.
| #define GRAPHENE_NET_TEST_P2P_PORT 1700 |
Definition at line 58 of file config.hpp.
| #define GRAPHENE_NET_TEST_SEED_IP "<IP_ADDRESS>" |
Definition at line 57 of file config.hpp.
| #define GRAPHENE_PEER_DATABASE_RETRY_DELAY 15 |
AFter trying all peers, how long to wait before we check to see if there are peers we can try again.
Definition at line 48 of file config.hpp.
| #define MAX_MESSAGE_SIZE 1024*1024*2 |
2MiB
Definition at line 41 of file config.hpp.
| #define MAXIMUM_PEERDB_SIZE 1000 |
Definition at line 114 of file config.hpp.
| constexpr size_t MAX_ADDRESSES_TO_HANDLE_AT_ONCE = 200 |
Definition at line 116 of file config.hpp.
| constexpr size_t MAX_BLOCKS_TO_HANDLE_AT_ONCE = 200 |
Definition at line 118 of file config.hpp.
| constexpr size_t MAX_SYNC_BLOCKS_TO_PREFETCH = 10 * MAX_BLOCKS_TO_HANDLE_AT_ONCE |
Definition at line 119 of file config.hpp.


I have 22 years of firmware and software experience, from writing device drivers to full-stack software development.
Team Project using foundation, html, css, jscript, jquery, json, Google Maps api, Zomato api
Project 2
Project 3
Application using HTML, CSS and Javascript
Application using HTML, CSS and Javascript, jquery and local storage
Resume


CF Seeker
Home
Find
Convert
Let's convert a GUID to names or Vice Versa by filling out a set of the fields below
By Org, Space, and/or App Names
-OR-
By GUID
Result


Store Title Inventory
Name
Barcode
Add product
Remove product
Inventory
Companies
Product
Barcode
Quantity
Available
Storage Name
Price


Uploading
-
photo.png7,5 mb37% done90KB/sec
-
task.doc7,5 mb37% done90KB/sec
-
dashboard.png7,5 mbCompleted90KB/sec


By default, all buttons in the body content are styled as block-level elements so they fill the width of the screen:
ButtonHowever, if you want a more compact button that is only as wide as the text and icons inside, add the data-inline="true"
attribute to the button:


PANIC A film review by Steve Rhodes Copyright 2000 Steve Rhodes RATING (0 TO ****): ***
Alex (William H. Macy) is a depressed, middle-aged, middle class guy who works two jobs. In the first, working out of his home, he sells "lawn ornaments, kitchen gewgaws and sexual aids." But it is his second job, working for his father, Michael (Donald Sutherland), which concerns us. Simply put, Alex is a hit man, a contract killer, a cold-blooded murderer.
PANIC, by writer/director Henry Bromell, is a crisp tale rather like a short story. The black comedy has a smart, subtle wit and is filmed in melancholic shades of blues and greens. A character study of middle-aged angst, the movie could not have had a better lead than by Macy. With his troubled brow and his handsome, big, soulful eyes, he speaks volumes without even opening his mouth. He could be the poster boy for middle-aged men everywhere. Giving another of his empathetic performances, he makes his character's pain visceral. Alex is one lost, depressed guy, and his job is perhaps the least of his problems.
In contrast to his emotionally volatile father, Alex never loses his temper. At home, Alex has an inquisitive, precocious and borderline obnoxious 6-year-old boy, Sammy (David Dorfman), and a self-described "jealous housewife," Martha (Tracey Ullman). He goes through the motions with them, but his mind is lost in the fog.
Alex, after years of bottling up his anger and his crushing sadness, goes to seek the advice of a shrink, Dr. Parks (John Ritter). At Dr. Parks's office, he finally discovers hope -- no, not from the doctor but from a 23-year-old patient, Sarah (Neve Campbell), whom he meets in the waiting room.
Where, if anywhere, Alex and Sarah's relationship will go isn't clear. Whether it will ever even evolve past awkward, polite conversation isn't at all certain. Like the rest of the story, their chemistry is sad, sweet and poignant. Sarah is wise beyond her years, fairly amoral and emotionally disturbed. As in many short stories, most of her character stays an enigma. One thing is obvious -- Alex cannot get her out of his mind.
We learn more about some of the underlying causes of Alex's mental problems. "Every man has a destiny, Alex. The trick is in discovering it," his father tells him at age 6, as he is being shown his destiny, or at least the one that his father has in mind for him.
Touching, sad and sometimes funny, PANIC is the story of Alex's rebellion at what has become his destiny. The movie's biggest surprise is that with an excellent cast, superb acting and an intriguing story, almost no one has seen it, since it is getting an absolutely minimal theatrical release. With all of the insipid films that get released every week, it is a shame that one with this much merit is being ignored.
PANIC runs a fast 1:30. It is rated R for language and elements of violence and would be acceptable for most teenagers.
Email<EMAIL_ADDRESS>The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews