Class: ActiveRecord::Migration::CommandRecorder
| Inherits: |
Object
|
| Child Modules: | StraightReversions |
| Includes: | StraightReversions, JoinTable |
| Defined in: |
Overview
ActiveRecord::Migration::CommandRecorder
records commands done
during a migration and knows how to reverse those commands. The
CommandRecorder knows how to invert the following commands:
-
add_column
-
add_index
-
add_timestamps
-
create_table
-
create_join_table
-
remove_timestamps
-
rename_column
-
rename_index
-
rename_table
Instance Attribute Summary collapse
Class Method Summary collapse
-
.new(delegate = nil) ⇒ CommandRecorder
constructor
a new instance of CommandRecorder
Instance Method Summary collapse
- #add_belongs_to
-
#inverse_of(command, args, &block)
Returns the inverse of the given command.
-
#record(*command, &block)
record
command
. - #remove_belongs_to
-
#revert
While executing the given block, the recorded will be in reverting mode.
Constructor Details
.new(delegate = nil) ⇒ CommandRecorder
a new instance of CommandRecorder
21 22 23 24 25
# File 'activerecord/lib/active_record/migration/command_recorder.rb', line 21 def initialize(delegate = nil) @commands = [] @delegate = delegate @reverting = false end
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
#method_missing(method, *args, &block) (private)
Forwards any missing method call to the target.
188 189 190 191 192 193 194
# File 'activerecord/lib/active_record/migration/command_recorder.rb', line 188 def method_missing(method, *args, &block) if @delegate.respond_to?(method) @delegate.send(method, *args, &block) else super end end
Instance Attribute Details
#commands
[ GitHub ]19
# File 'activerecord/lib/active_record/migration/command_recorder.rb', line 19 attr_accessor :commands, :delegate, :reverting
#delegate
[ GitHub ]19
# File 'activerecord/lib/active_record/migration/command_recorder.rb', line 19 attr_accessor :commands, :delegate, :reverting
#reverting
[ GitHub ]19
# File 'activerecord/lib/active_record/migration/command_recorder.rb', line 19 attr_accessor :commands, :delegate, :reverting
Instance Method Details
#add_belongs_to
[ GitHub ]87
# File 'activerecord/lib/active_record/migration/command_recorder.rb', line 87 alias :add_belongs_to :add_reference
#inverse_of(command, args, &block)
Returns the inverse of the given command. For example:
recorder.inverse_of(:rename_table, [:old, :new])
# => [:rename_table, [:new, :old]]
This method will raise an IrreversibleMigration
exception if
it cannot invert the command
.
63 64 65 66 67
# File 'activerecord/lib/active_record/migration/command_recorder.rb', line 63 def inverse_of(command, args, &block) method = :invert_#{command}" raise IrreversibleMigration unless respond_to?(method, true) send(method, args, &block) end
#record(*command, &block)
record command
. command
should be a method name
and arguments. For example:
recorder.record(:method_name, [:arg1, :arg2])
48 49 50 51 52 53 54
# File 'activerecord/lib/active_record/migration/command_recorder.rb', line 48 def record(*command, &block) if @reverting @commands << inverse_of(*command, &block) else @commands << (command << block) end end
#remove_belongs_to
[ GitHub ]88
# File 'activerecord/lib/active_record/migration/command_recorder.rb', line 88 alias :remove_belongs_to :remove_reference
#revert
While executing the given block, the recorded will be in reverting mode. All commands recorded will end up being recorded reverted and in reverse order. For example:
recorder.revert{ recorder.record(:rename_table, [:old, :new]) }
# same effect as recorder.record(:rename_table, [:new, :old])
34 35 36 37 38 39 40 41 42
# File 'activerecord/lib/active_record/migration/command_recorder.rb', line 34 def revert @reverting = !@reverting previous = @commands @commands = [] yield ensure @commands =<EMAIL_ADDRESS>@reverting = !@reverting end


| Top |
SoupRequestHTTP implements SoupRequest for "http" and "https" URIs.
To do more complicated HTTP operations using the SoupRequest APIs,
call soup_request_http_get_message()
to get the request's
SoupMessage.
SoupMessage *
soup_request_http_get_message (SoupRequestHTTP *http
);
Gets a new reference to the SoupMessage associated to this SoupRequest
Since 2.40


An error occurred. See the
log
to check why.
A
!
- PML User Study
MAX
Please, push
Start
when you are ready to begin.
Start


23c0093ce84cbb7dfbf530e714f28cbfdcd6414e9b634835f0caa009aa7cebee
Money is my favourite topic to talk about. Works as a self-employed service provider, and is planning to start a side business. Uses Mobile Money for most transactions and believes that going cashless discourages bad money behaviours. Uses Google Drive to backup contacts, photos, and videos. Does not expect to run out of space any time soon.
📍 Rwanda 🏦 Bank 💸 Mobile Money 📱 Android 💻 Desktop/Laptop ☁ Google Drive (free)
| Profile & Work | |
|---|---|
| Location | RWANDA |
| Job | SELF_EMPLOYED |
| Payment Frequency | DAILY/WEEKLY/MONTHLY |
| Hours Per Day | >3 |
| COVID19 impact on Work Hours | >4 |
| Side Hustle | NONE |
| Business Partners | 0 |
| Dependants | 0 |
| Technical Knowhow (1-10) | 5 |
| Preferences | |
|---|---|
| Store |
|
| Primary store of Value | MTN_MOBILE_MONEY |
| Spending Wallet |
|
| High Value Transactions | MTN_MOBILE_MONEY |
| High Value | > Rwf 200,000 |
| Digital Banking | BANKING_MOBILE_APP |
| Prefered Payment Method | MTN_MOBILE_MONEY |
| Fee | Worried about the frequent fees |
| Money Management Strictness |
Before COVID people paid in cash, now as the government encourages cashless, 99% of my clients are using Mobile Money.
Even I have gone cashless, if you ask me for Rwf 1000, I won't have it because people pay me using Mobile Money.
What they do is that they'll withdraw their money using mobile banking. Because it's linked with their mobile money, then can just transfer it to their mobile money and then they can pay me with it.
So, if you look at the cost-effectiveness, and internet speed, Airtel is the best [in Rwanda]. The problem is that we have already gotten used to using MTN services. Our friends, families, bosses, clients all use MTN on the daily. It's hard to call someone who won't call you back because they are using another network.The reason why we're sticking to MTN is that our people, our friends are on MTN. So, it's hard to tell someone: "Do you have Airtel?  But as people buy Airtel for internet, they'll end up using it for other services too, like SMS and calling even mobile money.
| Tech Specs | |
|---|---|
| Phone Model | Infinix |
| Phone OS | Android |
| SD Card | YES |
| Previously Lost Phone | UNKNOWN |
| Desktop/Laptop | YES |
| Email Addresses | >1 |
| Cloud Provider |
|
| Cloud Storage Capacity (GB) | 15 |
| Storage Cost | Free Tier |
| Out of Space Warnings | UNKNOWN |
Yes. I feel comfortable because I download it from the Google Playstore. I think they are reliable, and for security, if someone is to infiltrate my phone they are going to let me know. So I feel okay giving my number like that.


Blog: Dirichlet Distributions.
• Tutorials
Dirichlet Distribution is a distribution over distributions.  You can imagine, as if there is a bag of dices, and each dice has a corresponding pmf (related to six possible outcomes). Now picking a dice is like sampling a particular pmf from a distribution. The probability of picking a dice, which results in a pmf, comes from the Dirichlet distribution .
Let be a pmf (or a point in simplex ), where and . Here is dirichlet parameter and . Then, the probability density of is given by:
Graphical Model:
Suppose is a set of samples drawn from pmf where . For eg. could be a sequence of outputs of a dice . Let are pmfs. Then:
Let be the number of outcomes in sequence of samples that is equal to event where , and let .
Therefore,
- Bela A. Frigyik, Amol Kapila, and Maya R. Gupta. “Introduction to the Dirichlet Distribution and Related Processes”. [PDF]


Dwaine is in the Living Room
What should I do Next?
Talk to Fred
Talk to Jane
Talk to Harry
Talk to Wilma
Enter Kitchen
Enter Basement


=== Thru Compromised System ===
Actions that can be taken thru a compromised system:
*Port Forwarding
*Proxy to internal network (SSH)
*VPN to internal network
*Execute Remote Exploit
*Abuse of compromised credentials and keys (Webpages, Databases..etc)
The action that will be executed will depend on the information needed to show specific risk and/or further penetrating the client's network and hosts. Regular planning sessions are recommended to re-evaluate the information gather and decide the best approach to continue the post exploitation until the set goals are meet.


THE PILLOW BOOK (1995) A Film Review by Ted Prigge Copyright 1998 Ted Prigge
Writer/Director: Peter Greenaway Starring: Vivian Wu, Yoishi Oida, Ken Ogata, Ewan McGregor, Hideko Yoshida, Judy Ongg, Ken Mitsuishi, Yutaka Honda, Barbara Lot
They say that a film reflects the man who made them. Or at least I do. That's why I'd like to find out what kind of a person director Peter Greenaway really is, especially after seeing two of his films, "The Cook, the Thief, His Wife, and Her Lover" and "The Pillow Book." The first features tons of sex, full nudity of both sexes, people eating escrement, and cannibalism. The latter, his latest film, features some more sex, some more graphic nudity, and, for a little cherry on top, calligraphy being written on naked human flesh. Something tells me this guy was a bit of an outcast in pre-school.
Compared with "The Cook," one of the best films to be released in the 80s, "The Pillow Book" seems rather shallow. Instead of being against gluttony and being a thinly veiled attack on politics ("The Cook" attacked Margaret Thatcher...somehow), "The Pillow Book" has a smaller and more general vision. It's a film about gaining life experiences. That's all. It also dabbles in vengeance, sensuality, the connection between literature and sex, as well as love, but these are mere ingredients in the big picture, which is a very simple work complexly and originally told by one of the most interesting directors working today. I'm not sure if he's one of the best, but he's definitely intriguing.
"The Pillow Book" centers around the early life of a Japanese woman named Nagiko (Vivian Wu), who shares a deep affection for her calligrapher father (Ken Ogata), since when she was young, he would write on her on each of her birthdays, telling the same story about how God would write in every feature on his clay creations, and wrote their names on them so he would not forget them. Unfortunately, she discovers at an early age that he's not a very successful writer and must therefore satisfy the sexual urges of a homosexual and tyrranical publisher (Yoishi Oida), who becomes the object of Nagiko's anger because of this.
 Eventually, she runs into a Scottish linguist, Jerome (Ewan McGregor - yes, that Ewan McGregor), who not only shares her fetish to almost equality, but also just happens to be the Publisher's young lover. Soon she begins to come up with a bizarre vengeance on him...
Though it takes awhile to really get into the film, "The Pillow Book" is a endlessly fascinating film, told in a surreal and sensual fashion. The direction by Peter Greenaway is definitely original, as he develops his framing bizarrely, cropping shots so that they fill only a fraction of the allotted screen space, and features images to pop up in the screen, and sub-titles to sometimes appear...and sometimes not. The film is filmed in about four different languages, and only sometimes does what the actors are saying become dictated for American audiences. And sometimes French song lyrics from the soundtrack quickly roll across the screen, giving the entire film a kind of documentary/music video feel. Something tells me Greenaway should dabble outside of narrative film. I don't know why...
The story's not extraordinary, as it sometimes contains cliches and allusions to past Greenaway efforts (most notably "The Cook"). The whole idea of a delicious kind of vengeance was used in "The Cook," while another scene is almost an exact retread of a late scene in "The Cook," with one small exception (as small as it is). But once looking past this, it's easy to realize how complex this film is. Scenes and moments don't make sense when you first see them, but later on they're made totally clear. Characters show up for maybe a scene and then show up later on to become one of the major characters (most notably Jerome). And the focus of the film seems to be straying but once the finale comes, it appears that it hasn't lost its focus at all.
The most amazing film about this film is the way it feels. Greenaway is one of the most sensual directors, a man who can make a film just FEEL great by using bizarre cinematic techniques. He makes the story of Nagiko's life seem more amazing than it really is, just like the life of a regular person. But what is The Pillow Book? It's a book by an ancient courtesean recounting her experiences, which is something which Nagiko reads and tries to duplicate in a bizarre fashion. This is what Greenaway is doing with Nagiko's life, retelling it in a bizarre fashion. And it's one of the more amazing experiences I've had watching a movie lately.
MY RATING (out of 4): ***1/2
Homepage at: http://www.geocities.com/Hollywood/Hills/8335/
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


This topic describes the Java Control Panel, which is used to control how Java and JavaFX applications that are embedded in a browser or are launched from a browser run on your computer. The settings in the Java Control Panel are not used by standalone and self-contained applications.
The Java Control Panel provides the following capabilities:
View and delete temporary files used by the Java Plug-in, which runs Java applications that are embedded in a browser, and by Java Web Start, which enables you to run Java applications over the network.
Update your version of the Java platform so that you always have the latest Java Runtime Environment (JRE).
Set runtime parameters.
Manage certificates.
View an active deployment rule set.
Manage the exception site list.
Set options for debugging, applet handling, and other functions.
The Java Control Panel includes the following tabs:
Figure 20-1 shows the General tab.
Figure 20-1 Java Control Panel General Tab
The General tab contains the following sections: About, Network Settings, and Temporary Internet Files. This tab also indicates if Java is enabled in the browser, which is controlled in the Security tab.
The about section provides information about the version of Java that you are running. Click About to view version information for the latest JRE installed on the computer.
The Network Settings section enables you to configure your connection to the network. Click Network Settings to show the Network Settings dialog, which offers the following choices:
Use browser settings
Select this option to use the browser default proxy settings. This is the default setting.
Use proxy server
Select this option to provide the address and port number of the proxy server that you want to use. The option to bypass the proxy server for local addresses is available.
To provide separate addresses for different protocols, click Advanced. You can also specify address that bypass the proxy server.
Use automatic proxy configuration script
Select this option to specify the URL for the JavaScript file (.js or .pac extension) that contains the FindProxyForURL
function. FindProxyForURL
has the logic to determine the proxy server to use for a connection request.
Direct Connection
Select this option if you do not want to use a proxy.
The Temporary Internet Files section enables you to manage files that are cached for applications that are embedded in a web page or launched from a web page.
Click Settings to show the Temporary Files Settings dialog from which you can perform the following actions:
Specify if you want to keep temporary files on your computer.
Specify the location where temporary files are kept.
Specify the compression level for JAR files.
Specify the amount of disk space for storing temporary files.
Delete temporary files by pressing the Delete Files button, which shows the Delete Temporary Files dialog. From this dialog, you can specify the files that you want to delete:
Trace and Log Files
Cached Applications and Applets
Installed Applications and Applets
Restore default settings for the Temporary Files Settings dialog by pressing the Restore Defaults button.
Click View to show the Java Cache Viewer dialog. This dialog enables you to list applications, resources, and deleted applications stored in the Java cache. In addition, you can perform the following actions:
Run and visit the Web page of applications.
View the JNLP file of applications and resources.
The Update tab is available on Microsoft Windows and OS X for both the 32-bit and 64-bit versions of the JRE, and only for users with Administrative privileges. On Microsoft Windows, if the JRE is installed and this panel is not available, launch the Java Control Panel directly from the command line (<JRE installation directory>
\bin\javacpl.exe
). Figure 20-2 shows the Update tab.
Figure 20-2 Java Control Panel Update Tab
The Update tab is used with the Java Update Scheduler (jusched.exe
) to provide the latest Java updates to the end user. This tab enables you to automatically or manually update all JREs (including 32-bit and 64-bit versions) installed on your system.
The Update tab provides the following options:
Automatic update: Available only on Microsoft Windows, and set by default
Manual update
Select Check for Updates Automatically to have your JRE updated automatically on a schedule that you set. From the Notify Me drop-down list, choose to be notified either before the update is downloaded, or after the updated is downloaded but before the update is installed.
Click Advanced to set up the schedule for updates. To set how often the system checks for updates, choose Daily, Weekly, or Monthly. The default is monthly. For daily updates, you can select the time of the day for the update. For weekly updates, you can select the day of the week and the time of the day. For monthly updates, you can select the day of the week and the time of the day. Monthly updates check weekly and notify you within 30 days that an update is available, however, if an update is considered critical you are notified within a week of its release.
To immediately update your JRE at any time, click Update Now.
On Microsoft Windows platforms, the Java Update Scheduler, jusched.exe
, is used to launch automatic updates when the option to update automatically is selected in the Update tab. jusched.exe
runs as a background process that launches the Update Manager at predefined intervals set by the user using the Advanced button of the Update tab. The Update Manager coordinates the update process.
jusched.exe
is launched when the user reboots the computer after installing the JDK or JRE. It is normally transparent to the user, but can be viewed in the Processes tab of the Windows Task Manager. If you do not want the scheduler to run, use the End Process button of the Processes tab to kill the process.
Figure 20-3 shows the Java tab.
Click View to show the Java Runtime Environment Settings dialog, which provides information on the JREs that are installed on your system, and enables you to choose the JREs that you want to use to run applications that are embedded in a web page or launched from a browser.
The Java Runtime Environment Settings dialog has two tabs, User and System. Both tabs show a table that contains information on the JREs that are installed on your system. The User tab shows all of the registered JREs and JREs that the user has added. The System tab shows the JRE that was used to start the Java Control Panel.
Each row in the table represents a Java Runtime Environment (JRE) that is installed in your computer. The following information is provided for each JRE:
Platform: The version of the JRE
Product: The full version number of the JRE, including the update number
Location: The URL that Java Update Scheduler uses to launch automatic updates
Path: The full path to the JRE
Runtime Parameters: Optional custom options used to override the Java Plug-in default startup parameters
Enabled: Flag that indicates which of the JRE versions are considered when running an application using Java Plug-in or Java Web Start. Settings in the Java Control Panel do not apply to standalone or self-contained applications. If the check box for a JRE is not selected, then Java Plug-in and Java Web Start will not use the JRE to launch Java applications. However, the current JRE might be used even if it is not marked as enabled.
|
Note: If Java content in the browser is disabled in the Security tab of the Java Control Panel, enabling the JRE in the Java Runtime Environment Settings dialog has no effect. See Section 20.4, "Security" for information on the Enable Java Content in the Browser option. |
To change the information for a JRE in the User tab, click the cell in the table and edit the value. The information in the System tab cannot be edited.
In the User tab, the following functions are available:
Click Find to launch the JRE Finder. Use this utility to search for JREs that are installed on your computer and add them to the table.
Click Add to manually add a JRE to the table. A new row is added to the table. Fill in the values for Platform, Product, Path, Runtime Parameters, and Enabled.
Click Remove to remove the selected JRE from the table.
The table always has at least one entry, which is the most recently installed JRE. This is the JRE that is associated with the Java Control Panel.
Microsoft Windows shows all of the JREs that are installed on a computer. The Java Control Panel finds the JREs by looking in the registry. On Solaris, Linux, and OS X, the JRE that Java Web Start or Java Plug-in is using to deploy applications is the JRE that is considered registered. Therefore, use the Find, Add, and Remove buttons to change which JREs are listed in the table. On OS X, only the currently installed JRE is displayed, JDKs are not included.
For Solaris, Linux, or OS X, only version 5.0 or higher should be added. For Microsoft Windows, where all JREs are found in the registry, version 1.3.1 or higher is shown.
You can override the Java Plug-in default startup parameters by specifying custom options in the Runtime Parameters column for a JRE. With the exception of setting classpath
and cp
, the syntax is the same as that used with parameters for the java
command line invocation. See the java command for a full list of command line options:
java
command: Windows, Solaris, Linux, or OS X.
The following sections provide examples of Java runtime parameters.
classpath
and cp
The following format should be used for setting classpath
and cp
in Java Plug-in. It differs slightly from the java
command line format, which uses a space instead of the equal (=
) sign.
-classpath=<path> -cp=<path>
To enable assertion support, use the following system property:
-[ enableassertions | ea ][:<package name>"..." | : <class name> ]
To disable assertion in the Java Plug-in, use the following property:
-[ disableassertions | da ][:<package name>"..." | : <class name> ]
Assertion is disabled in Java Plug-in code by default. The effect of assertion is determined during Java Plug-in startup. If you change the assertion settings in the Java Plug-in Control Panel, you must restart the browser for the new settings to take effect.
Because Java code in Java Plug-in also has built-in assertion, it is possible to enable the assertion in Java Plug-in code using the following parameter:
-[ enableassertions | ea ]:sun.plugin
Tracing is a facility to redirect any output in the Java Console to a trace file (plugin<random-number>.trace
or javaws<random-number>.trace
). Use the following parameters to turn on tracing:
-Ddeployment.trace=true -Ddeployment.trace.option=basic|net|security|ext|liveconnect
If you do not want to use the default trace file name, use the following parameter to specify a different name:
-Ddeployment.trace.filename=<tracefilename>
Similar to tracing, logging is a facility to redirect any output in the Java Console to a log file (plugin<random-number>.log
or javaws<random-number>.log
) using the Java Logging API. Use the following parameter to turn on logging:
-Ddeployment.logging=true
If you do not want to use the default log file name, use the following parameter to specify a different name:
-Ddeployment.log.filename=<logfilename>
Furthermore, if you do not want to overwrite the trace and log files each session, you can use the following parameter:
-Ddeployment.outputfiles.overwrite=false
Tracing and logging set through the Java Control Panel take effect when the Plug-in is launched. However, changes made through the Java Control Panel while a Plug-in is running have no effect until a restart.
The following parameters are used when debugging applets in the Java Plug-in:
-Djava.compiler=NONE -Xnoagent -Xdebug -Xrunjdwp:transport=dt_shmem,address=<connect-address>,server=y,suspend=n
The <connect-address>
can be any string, for example, 2502
, which is used by the Java Debugger (jdb
) later to connect to the JVM.
The default network timeout value for all HTTP connections is two minutes. You can override this setting by using the following parameter:
-Dsun.net.client.defaultConnectTimeout=<value in milliseconds>
Another networking property that you can set is sun.net.client.defaultReadTimeout
, as shown in the following example:
-Dsun.net.client.defaultReadTimeout=<value in milliseconds>
|
Note: Java Plug-in does not setsun.net.client.defaultReadTimeout by default. If you want to set it, do so through the Java Runtime Parameters as shown above. |
The following networking parameters can also be used to set the connect and read timeout values for the protocol handlers used by java.net.URLConnection
. The default value set by the protocol handlers is -1
, which means there is no timeout set.
sun.net.client.defaultConnectTimeout
specifies the timeout in milliseconds to establish the connection to the host. For example, for HTTP connections, it is the timeout when establishing the connection to the HTTP server. For FTP connections it is the timeout when establishing the connection to FTP servers.
sun.net.client.defaultReadTimeout
specifies the timeout in milliseconds when reading from an input stream when a connection is established to a resource.
For the official description of these properties, see Networking Properties.
Figure 20-4 shows the Security tab.
Figure 20-4 Java Control Panel Security Tab
To prevent any Java application from running in a browser or being launched from a browser, make sure that the Enable Java content in the browser option is not selected. This option is selected by default.
The security level determines the criteria used to allow or block a Java application from running within a browser or being launched from a browser. As the security level is increased, more restrictions are placed on allowing an application to run, and stronger warnings are issued to the user.
The default security level setting is High. The available settings are:
Very High - Applications that are signed with a valid certificate that is located in the Signer CA keystore, and include the Permissions attribute in the manifest for the main JAR file are allowed to run with security prompts. All other applications are blocked.
High - Applications that are signed with a valid certificate that is located in the Signer CA keystore, and include the Permissions attribute in the manifest for the main JAR file are allowed to run with security prompts. Applications are also allowed to run with security prompts when the revocation status of the certificate cannot be checked. All other applications are blocked.
See Chapter 24, "Rich Internet Application Deployment Process" for information on how the decision to run or block an application is made.
The Security Level setting affects plug-in applets, Java Web Start applications, embedded JavaFX applications, and access to the native deployment toolkit plug-ins. This setting does not affect standalone or self-contained Java applications.
For more information, see Section 23.1, "Setting the Security Level of the Java Client."
The exception site list contains a list of URLs that host RIAs that users want to run even if the RIAs are normally blocked by security checks. RIAs from the sites listed are allowed to run with applicable security prompts. Click Edit Site List to add, edit, and remove items.
See Chapter 29, "Exception Site List" for more information.
If an active deployment rule set is installed on the system, the link View the active Deployment Rule Set is shown before the Manage Certificates button. Click the link to view the rule set. For information on the certificate used to sign the rule set, click the View Certificate Details link in the Deployment Rule Set - More Information window.
When a rule set is available, the rules determine if a RIA is run without security prompts, run with security prompts, or blocked. For more information on deployment rules, see Chapter 28, "Deployment Rule Set". For more information on security prompts, see Section 23.5, "Security Dialogs."
An option to hide a prompt in the future is included in some security prompts that are shown when an application starts. To insure the continued security of your system, it is recommended that you periodically restore the prompts that were hidden. Seeing the prompts again provides an opportunity to review the applications and ensure that you still want them to run.
To restore the prompts that were previously hidden, click Restore Security Prompts. When asked to confirm the selection, click Restore All. The next time an application is started, the security prompt for that application is shown.
User-level and system-level certificates used to sign RIAs that you run can be managed by clicking Manage Certificates. From the Certificates dialog, you can import, export, remove, and view the details for certificates. Information is provided for the following types of certificates:
Trusted Certificates - Certificates for signed RIAs that are trusted.
Secure Site - Certificates for secure sites.
Signer CA - Certificates of Certificate Authorities (CAs) who issue the certificates to the signers of trusted certificates.
Secure Site CA - Certificates of CAs who issue the certificates for secure sites.
Client Authentication - Certificates used by a client to authenticate itself to a server.
You can export, import, remove, and view the details of user-level certificates using the buttons provided in the Certificates dialog. To export, remove, or view the details, first select a certificate from the list.
The following table shows the default location of the keystore
files.
Table 20-1 Default Keystore Location
| Operating System | Location |
|---|---|
|
Solaris, Linux, OS X |
|
|
Microsoft Windows |
|
For example, the default location on Microsoft Windows 7 for user jsmith
is
C:\Users\jsmith\AppData\LocalLow\Sun\Java\Deployment\security
To specify a user-level keystore in a location other than the default location, set properties in the user-level deployment.properties
file. See Chapter 21, "Deployment Configuration File and Properties" for information on configuration properties. The following table describes the property to set for each type of certificate.
Table 20-2 Properties for User-Level Keystore Locations
| Certificate Type | Property Name |
|---|---|
|
Trusted Certificates |
|
|
Secure site |
|
|
Signer CA |
|
|
Secure site CA |
|
|
Client Authentication |
|
You can export and view the details of system-level certificates using the buttons provided in the Certificates dialog. System-level certificates cannot be imported or removed by an end user.
Trusted, Secure Site, and Client Authentication certificate keystore
files do not exist by default. The following table shows the default location for the Signer CA keystore file.
Table 20-3 Default Location for the Signer CA Keystore
| IOperating System | Location |
|---|---|
|
Solaris, Linux, or OS X |
|
|
Microsoft Windows |
|
The following table shows the default location for the Secure Site CA keystore.
Table 20-4 Default Location for the Secure Site CA Keystore
| Operating System | Location |
|---|---|
|
Solaris, Linux, or OS X |
|
|
Microsoft Windows |
|
To specify a system-level keystore in a location other than the default location, set properties in the system-level deployment.properties
file. The System-Level deployment.properties
file does not exist by default. See Chapter 21, "Deployment Configuration File and Properties" for information on the system-level file and configuration properties. The following table describes the property to set for each type of certificate.
Table 20-5 Properties for System-Level Keystore Locations
| Certificate Type | Property Name |
|---|---|
|
Trusted Certificates |
|
|
Secure site |
|
|
Signer CA |
|
|
Secure site CA |
|
|
Client Authentication |
|
Figure 20-5 and Figure 20-6 show the options available in the Advanced tab on Microsoft Windows.
Figure 20-5 Java Control Panel Advanced Tab, Part 1
Figure 20-6 Java Control Panel Advanced Tab, Part 2
This tab includes options for Debugging, Java console, Default Java for browsers, Shortcut Creation, JNLP File/MIME Association, Application Installation, Secure Execution Environment, Mixed code security verification, Certificate revocation checks, Advanced Security Settings, and Miscellaneous.
The following choices are available:
Show the console
Hide the console (default)
Do not start the console
The following choices are available, both are selected by default:
Microsoft Internet Explorer
Mozilla Family
This option is ignored in current versions of Internet Explorer and Firefox, which automatically find and use the latest installed version of the JRE.
For older browsers, this option enables settings in your browser that enable you to use the JRE installed in your computer.
For example, if you enable this option for Microsoft Internet Explorer, then the option Use JRE <version number> for <applet> (requires restart)
is available, where <version number> is the version of the JRE installed in your computer. (Find this option by going to Tools, then Internet Options, then click the tab Advanced.)
In addition, if you enable this option for Mozilla Family, and your browser is Firefox, then the extension Java Console <version number> appears in the Add-ons list, where <version number> is the version of the JRE installed in your computer. (Access the Add-ons list from the Tools menu in the menu bar.)
This option provides the following choices for Java Web Start for creating shortcuts on the desktop, select only one:
Always allow
Always allow if hinted
Prompt user
Prompt user if hinted (default)
Never allow
This option enables you to associate files with the JNLP MIME type. The following choices are available, select only one:
Always allow
Prompt user (default)
Never allow
The following choices are available, select only one:
Install if hinted (default)
Install if shortcut created
Install if hinted and shortcut
Never install
A Java application or applet that is launched with Java Web Start can either be installed or cached on the client computer. If the Java application is cached, then Java Web Start stores the entire application in its cache; the application is removed from the client computer when Java Web Start empties its cache. If the Java application is installed, then the application has an entry in the Add or Remove Programs applet in Windows Control Panel.
A Java application or applet can specify if it prefers to be cached or installed; if the Java application specifies that it prefers to be installed, then it is hinted. By default, Java applications that are hinted are installed on the client computer. You can also specify that a Java application is installed if it creates a shortcut on the client computer's desktop.
The following choices are available, more than one can be selected:
Allow user to grant permissions to signed content
Show sandbox warning banner
Allow user to accept JNLP security requests
Don't prompt for client certificate selection when no certificates or only one exists
Warn if site certificate does not match hostname
Show site certificate from server even if it is valid (not checked by default)
The following choices are available, select only one:
Enable - show warning if needed (selected by default)
Enable - hide warning and run with protections
Enable - hide warning and don't run untrusted code
Disable verification (not recommended)
For more information, see Chapter 27, "Mixing Privileged Code and Sandbox Code."
Before a signed applet or Java Web Start application is run, the certificates used to sign the JAR file can be checked to ensure that none have been revoked. You can have all certificates checked, or only the certificate from the publisher of the app. If a certificate has been revoked, any RIA that is signed with the certificate is not allowed to run. This check can be disabled, but that is not recommended. The following choices are available, select only on:
Publisher's certificate only
All certificates in the chain of trust (selected by default)
Do not check (not recommended)
The following options indicate what to use to determine if a certificate has been revoked, select only one:
Certificate Revocations Lists (CRLs)
Online Certificate Status Protocol (OCSP)
Both CRLs and OCSP (selected by default)
If Do Not Check is selected for Perform certificate revocation checks on, this setting is ignored.
The following choices are available, more than one can be selected:
Use certificates and keys in browser keystore
Enable blacklist revocation check
Enable caching password for authentication
Use SSL 2.0 compatible ClientHello format (not checked by default)
Use TLS 1.0
Use TLS 1.1
Use TLS 1.2
The following choices are available, none are checked by default:
Place Java icon in system tray
Suppress sponsor offers when installing or updating Java
Select this option if you do not want to be provided with offers from sponsors during the installation or update process.


Class SWyEdConverterDOM
Converts a workflow created with yEd Graph Editor (freeware) and saved in
graphml format into an array suitable to be used with the simpleWorkflow
extension (sW).
The conversion is based on the $mapper array, which defines matches between sW attributes and properties used by yEd. Following sW values are references using a predefined name :
The conversion is based on the $mapper array, which defines matches between sW attributes and properties used by yEd. Following sW values are references using a predefined name :
- workflow - initial : is the id of the initial node
- node - id : id of a given node
- node - constraint : PHP expression used as constraint for a node
- node - label : text label for a node
- node - metadata.* : custom metadata value
- edge - task : PHP expression executed when the transition is performed
Located at SWyEdConverterDOM.php
Methods summary
public
|


City Latitude
Home
Plots
Cloudiness
Humidity
Temperature
Wind Speed
Comparison
Data
Comparison
Select a card to view a comparison of latitude vs the individual weather phenomenon
Cloudiness
Humidity
Temperature
Wind Speed


abstract fun isConnected(): Boolean
Tell if the connection with robot is still working
Return if the robot is connected


As a parent, it's next to impossible to fly if you have multiple kids. Holding a baby while trying to carry your own luggage, the baby's luggage, the toddler's luggage, the carseat, the stroller, etc. is physically impossible.
KidsFly will alert airport staff when you arrive to have an airport employee ready at the curb when you arrive. Let us handle the heavy lifting with an extra set of hands, so you can focus on your excited young ones. Have a safe flight!


03.04.2015
Chill nation
A soulful singer/songwriter from a small English town with a penchant for crafting moving and evocative folk-pop confections in the vein of Ed Sheeran, Foy Vance, and Ben Howard, James Bay hails from the North Hertf shire market town of Hitchin. Bay honed his skills regionally, eventually
0101.03.2015
Chill nation
Hard Rock Cafe teamed with the band, granting them the first ever full access to take control of Hard Rock Cafe's internal video system (more than 20,000 screens at all 151 locations worldwide)
0204.04.2015
Chill nation
In 2015 a world tour, entitled the Smoke and Mirrors Tour is scheduled in promotion of the world-wide release of Smoke and Mirrors.
0301.07.2015
Chill nation
A soulful singer/songwriter from a small English town with a penchant for crafting moving and evocative folk-pop confections in the vein of Ed Sheeran, Foy Vance, and
0402.11.2015
Chill nation
Hell and Silence is an EP by Las Vegas rock group Imagine Dragons, released in March 2010 in the United States. It was recorded at Battle Born Studios.[1] All songs were written by Imagine Dragons and self-produced. The EP was in part mixed
0506.09.2015
Chill nation
A soulful singer/songwriter from a small English
062-2-15 Hokukoryokuchi, Konohana Ward, 554-0042 Osaka Prefecture Osaka Japan
01.04.2015
When the last-minute request is for a focus group, it’s usually a sign that the request originated in Marketing. When Web sites are being designed, the folks in Marketing often feel like the don't have much clout. Even though they're the ones who spend the most time trying to figure out who the site's audience and what they want, the desifners and developers are the ones woth most of the
27.05.2015


This is PVArray Issues for EPICS V4
This is the 14-Jan-2014 version of the PVArray Issues. The main change since the last version is the last section Proposal: COW as now implemented on C++, i. e. shallow copy for union, scalarArray, structureArray, and unionArray
How arrays are implemented has a big impact on performance and memory usage. areaDetector applications are a good example. A detector image can have hundreds of megaPixels. If each areaDetector plugin, each channelMonitor, etc has it's own copy of the image than a lot of memory is required and a lot of time will be spent copying data between the various copies of the image.
This document describes how arrays are currently implemented and then discuss possible improvements. pvDataCPP already has good support for scalarArray data but some problems remain for union, unionArray, and structureArray fields. pvDataJava has no good support for improving array performance and memory usage.
This introduction provides the background for the remaining sections.
The discussion below is a continuation of the discussion of arrays at the areaDetector meeting at Diamond in October of 2014. That discussion resulted from what David Hicken learned while developing NTNDArray.
pvAccess monitors provide a good example of how memory and performance can be impacted by implementation.
Monitor are implemented via a finite queue of monitorElements. A channel connects to a PVRecord in a pvAccess server. The PVRecord has a pvStructure that has the data provided by the server. The monitor implementation creates a monitorElement queue and is the producer, i. e. it puts things into the queue. The client is the consumer, i. e. it takes monitorElements out of the queue. When the producer is created it allocates a monitorElement queue. A monitorElement queue has the following methods:
MonitorElement getFree(); void setUsed(MonitorElement element); MonitorElement getUsed(); void releaseUsed(MonitorElement element);where
Important Notes:
When the producer is active it always owns one element of the queue. If the consumer does not keep up the producer keeps using the element it owns (This is one reason for the overrun bitSet). Since at any given time the consumer may or may not own a monitorElement, the queue size must be at least two, one for the producer and one for the consumer.
A MonitorElement has the following:
monitorElement PVStructure pvStructure BitSet changedBitSet BitSet overrunBitSetwhere
Comments:
Some important features of pvAccess are:
In order to implement the above features pvAccess uses bitSets, where each bit is associated with a field. The following is a top level pvStructure and how bits from a bitSet are assigned:
bit# field 0 structure 1 double scalarValue 2 structure timeStamp 3 long secondsPastEpoch 4 int nanoSeconds 5 int userTag 6 union unionValue structure timeStamp long secondsPastEpoch int nanoSeconds int userTag 7 structure[] structureValue structure timeStamp long secondsPastEpoch int nanoSeconds int userTag structure timeStamp long secondsPastEpoch int nanoSeconds int userTag 8 any[] unionValue any structure timeStamp long secondsPastEpoch int nanoSeconds int userTag any double value 9 string lastValue
Note that bits for structure subfields are assigned recursively. But each scalar, union, scalarArray, structureArray, and unionArray field are assigned a single bit. This means that each subfield of a union, structuctureArray, or unionArray is treated just like a new top level field. If ANY change is made to a union, scalarArray, structureArray, or unionArray, the complete set of data for that field is sent.
Comment: A pvAccess client can ask for a subset of the fields in the pvStructure from the PVRecord. But if a field is a union, unionArray, or structureArray then that entire field must be selected, i. e. it is not possible to recurse into these field types.
The pvAccess providers use the pvCopy facility to copy data between a clients pvStructure and the pvStructure in the PVRecord. When an instance of PVCopy is created it creates a reference to the PVStructure in the PVRecord. It's methods have arguments that include the pvStructure and changedBitSet for the client. What pvCopy does is look for matching fields in the two pvStructures and call the Convert facility to copy data between the matching fields.
Among the methods provided by the convert facility are methods to copy pvFields with compatible field types.` This means:
For arrays the C++ implementation enforces COW (Copy On Write) semantics. It implements shared_vector, which is simlar to std::vector except that is uses std::shared_ptr to hold the raw array. All PVArray fields use a const shared_vector to hold the raw array. This means that is is not possible to modify the array element. Instead to change the raw data a new shared_vector must be created, converted to a const shared_vector, and then used to replace the original const shared_vector
Convert does deep copies between scalar and structure fields but shallow copies between union, scalarArray, structureArray, and unionArray fields. For scalarArray fields this is safe because the implementation of arrays implements COW (Copy on Write) by making the array data const. This forces code to create new raw data in order to change a scalar array field. It also uses const for structureArray and unionArray fields but this does not force all elements of the array to be const. Thus the elements can be changed. Thus any code that wants to share a top level PVStructure must be very careful when changing the value of a union, structureArray, or unionArray field. The rule is that the union, structureArray, or unionArray must be replaced with a new value.
Convert doing a shallow copy means is that instead of copying each element the destination pvField shares the same underlying data as the source, i. e. the two shared pointers reference the same data, Thus both memory usage and the time to copy the data is saved.
Since the pvCopy facility makes extensive use of Convert the same rules apply to it.
Problem: The fact that convert does a shallow copy for union, unionArray, and structureArray fields means that code that puts to any of these field types must create a new instance of the underlying data and than use it to replace the original underlying data.
Lets take structureArray as an example. Assume some code gets the interface to the value field. The code can not change the value array element themselves but it can modify subfields of the array elements. For example the following:
static void test() { FieldCreatePtr fieldCreate = getFieldCreate(); PVDataCreatePtr pvDataCreate = getPVDataCreate(); StandardFieldPtr standardField = getStandardField(); StandardPVFieldPtr standardPVField = getStandardPVField(); ConvertPtr convert = getConvert(); FieldBuilderPtr fieldBuilder = fieldCreate->createFieldBuilder(); StructureConstPtr valueStructure = fieldBuilder -> add("short",pvShort) -> add("long",pvLong) -> createStructure(); PVStructurePtr top = pvDataCreate->createPVStructure( fieldBuilder-> addArray("value",valueStructure) -> createStructure()); size_t n = 2; PVStructureArray::svector values(n); for(size_t i=0; i<n ; ++i) values[i] = pvDataCreate->createPVStructure(valueStructure); PVStructureArrayPtr pvValue = top->getSubField<PVStructureArray>("value"); pvValue->replace(freeze(values)); cout << *top << endl; PVStructureArray::const_svector cvalues(pvValue->view()); PVStructurePtr pvSubField = cvalues[0]; pvSubField->getSubField<PVShort>("short")->put(10); cout << *top << endl; }produces:
structure structure[] value structure short short 0 long long 0 structure short short 0 long long 0 structure structure[] value structure short short 10 long long 0 structure short short 0 long long 0Look at the last three lines of the sample code. Note that the value of the short field of the first structure element changed value even though cvalues is a constant shared vector.
pvDataJava does a deep copy of all fields with the possible exception of scalar array fields. If the source and destination have the same scalarType and the source is immutable then the raw data array is shared and the destination is made immutable.
The following discuses a number of array related issues. Some of the ideas may conflict with other ideas.
Should convert do a deep copy instead of a shallow copy?
After all a union has at most a single subfield. The cost of a deep copy depends on the complexity of the subfield and whether or not it changes type. If it does not change type no new memory needs to be created. This is a strong argument for deep copy.
Perhaps convert should allow the caller to specify if shallow or deep copies are desired. A posibility is to add deepCopy to the following methods:
class Convert { ... void copy( PVFieldPtr const & from, PVFieldPtr const & to, bool deepCopy = false); void copyStructure( PVStructurePtr const & from, PVStructurePtr const & to, bool deepCopy = false); void copyStructureArray( PVStructureArrayPtr const & from, PVStructureArrayPtr const & to, bool deepCopy = false); void copyUnion( PVUnionPtr const & from, PVUnionPtr const & to, bool deepCopy = false); void copyUnionArray( PVUnionArrayPtr const & from, PVUnionArrayPtr const & to, bool deepCopy = false); }
NOTE: If some combination of the ideas in the next three sections are adapted then there should be enough information for convert to know when it should do a shallow or a deep copy.
When a producer puts data into a PVStructureArray or PVUnionArray can we develop a way to make not just the array but all elements and all fields in each element immuttable?
One way is to call setImmutable on the PVStructureArray or PVUnionArray. Then the only way to change anything is to call the replace method.
Is to possible to have all fields under a PVStructureArray or PVUnionArray be dynamically changed to be const?
If it is how expensive is it?
This means PVScalarArray, PVStructureArray, and PVUnionArray. shared_vector would still be used to hold the raw array but it would not be forced to be a const shared_vector.
An argument in favor is a top level PVStructure, which has an array subfield, being passed through a processing chain and each member of the chain modifies the array data.
How hard is this to implement? It it worthwhile?
Currently this is implemented by DefaultPVArray, PVStructureArray, and PVUnionArray. Each has the code:
checkLength(other.size()); value = other; PVField::postPut();
Each should be changed to also check for type compatibilitty. Thus:
While doing this other methods that modify any PVArray should be checked for similar problems.
This has problems. The following:
static void tesyModify(const PVStructurePtr & pvStructure) { PVDoublePtr pvDouble = pvStructure->getSubField<PVDouble>("value"); pvDouble->put(10.0); } static void test() { StandardPVFieldPtr standardPVField = getStandardPVField(); PVStructurePtr doubleRecord = standardPVField->scalar(pvDouble,""); doubleRecord->getSubField("value")->setImmutable(); cout<< *doubleRecord << endl; tesyModify(doubleRecord); cout<< *doubleRecord << endl; } int main(int argc,char *argv[]) { test(); return 0; }Produces:
epics:nt/NTScalar:1.0 double value 0 epics:nt/NTScalar:1.0 double value 10
Thus even though a scala field is immutable it was modified. Both the implementation of PVData and Convery need to be looked at carefully so that they enforce immutability.
The shareData method has never been properly tested. Also it should have the same semantics as pvDataCPP. If shareData is requested then after the shallow copy the field must be make immutable. Note that immutable can substitute for const shared_vector.
Summary
NOTE: The proposal does mean that the pvData API for both C++ and Java will change or at least some methods must be deprecated. This is a preliminary proposal and will not discuss compatibility.
Currently the array classes include:
PVVectorStorage PVScalarArray PVValueArray
PVValueArray derives from PVVectorStorage. PVBooleanArray, ..., PVStringArray are derived from PVScalarArray and PVValueArray. PVStructureArray and PVUnionArray are derived from PVValueArray. With what is being proposed the methods from PVVectorStorage and PVValueArray will be moved to PVScalarArray. PVVectorStorage and PVValueArray will be removed.
The description of PVScalarArray will be:
template<typename T> class epicsShareClass PVScalarArray<T> : public PVArray { public: // NOTE: many type defs and existing methods not shown virtual const_svector view() const; virtual void swap(const_svector& other); virtual void replace(const const_svector& next); };
NOTE: This should not break existing clients but will require rebuild.
The description of PVStructureArray will be:
class epicsShareClass PVStructureArray : public PVArray { public: // NOTE: many type defs and existing methods not shown virtual svector view() const; virtual void swap(svector& other); virtual void replace(const svector& next); virtual std::size_t append(std::size_t number); virtual bool remove(std::size_t offset,std::size_t number); virtual void compress(); };
NOTE: This will break existing client only because of const being removed.
The description of PVUnionArray will be:
class epicsShareClass PVUnionArray : public PVArray { public: // NOTE: many type defs and existing methods not shown virtual svector view() const; virtual void swap(svector& other); virtual void replace(const svector& next); virtual std::size_t append(std::size_t number); virtual bool remove(std::size_t offset,std::size_t number); virtual void compress(); };
NOTE: This will break existing client only because of const being removed.
The array copy methods will be changed so that only scalarArray method will do a shallow copy.
Java has no equivalent of const in C++ ( final is not equivalent). The following is similar to C++ except:
The API for all scalarArray types are similar so lets just consider PVDoubleArray:
public class ArrayData<T> { public T data; public int offset; public void set(Object array, int offset) {...} } public class DoubleArrayData extends ArrayData<double[]> {} public interface PVArray extends PVField, SerializableArray { Array getArray(); int getLength(); void setLength(int length); int getCapacity(); void setCapacity(int length); boolean isCapacityMutable(); void setCapacityMutable(boolean isMutable); } public interface PVScalarArray extends PVArray { ScalarArray getScalarArray(); } public interface PVDoubleArray extends PVScalarArray{ int get(int offset, int length, DoubleArrayData data); int put(int offset,int length, double[] from, int fromOffset); void shareData(double[] from); }The interfaces for PVStructureArray and PVUnionArray are also similar.
The following is for PVDoubleArray but I think it may be possible to use Java generics to handle all scalarArray types except PVBolleanArray and PVStringArray.
public interface PVArray extends PVField, SerializableArray { Array getArray(); int getLength(); ???? } public interface PVScalarArray extends PVArray { ScalarArray getScalarArray(); } public interface PVDoubleArray extends PVScalarArray{ double[] view(); replace(double[] value); };where
public interface PVStructureArray extends PVArray{ StructureArray getStructureArray(); PVStructure[] view(); replace(PVStructure[] value); int append(int number); bool remove(int offset, int number); void compress(); };
The following methods should be removed:
setImmutable isImmutable
Neither Java or C++ properly implements these methods. In addition, if the proposed changes are implemented, they are no longer needed.
Should the following methods be removed?
getCapacity // probably yes remove setCapacity // probably yes remove setLength // probably yes remove getLength // ???
At present the convert facility on pvDataCPP does shallow copy for union, scalarArray, structureArray, and unionArray.
Features:
Downsides:
The discussion of Java, capacity and length in the previous section are similar.


Have you ever wanted to replace a git submodules in a repository but don’t know where to start? You are in luck. In this tutorial, I am going to show you how I would do it.
It is actually pretty simple as long as you have added the submodules correctly in the first place.
This means that you added your submodules like this,
git submodule add https://www.github.com/poanchen/your-submodules-name path/to/your-submodules
One might think that you could do something like this,
git submodule replace https://www.github.com/poanchen/your-new-submodules-name path/to/your-new-submodules
However, it does not work like that as the list of available git submodule commands does not include replace except these,
git submodule [--quiet] add [-b <branch>] [-f|--force] [--name <name>]
[--reference <repository>] [--depth <depth>] [--] <repository> [<path>]
git submodule [--quiet] status [--cached] [--recursive] [--] [<path>...]
git submodule [--quiet] init [--] [<path>...]
git submodule [--quiet] deinit [-f|--force] [--] <path>...
git submodule [--quiet] update [--init] [--remote] [-N|--no-fetch]
[-f|--force] [--rebase|--merge] [--reference <repository>]
[--depth <depth>] [--recursive] [--] [<path>...]
git submodule [--quiet] summary [--cached|--files] [(-n|--summary-limit) <n>]
[commit] [--] [<path>...]
git submodule [--quiet] foreach [--recursive] <command>
git submodule [--quiet] sync [--recursive] [--] [<path>...]
Then, how would one replace it?
You simply need to modify one file, then you are done.
Take a look at your file .gitmodules in the root of your repository, it will probably look something similar to this,
[submodule "path/to/your-submodules"]
path = path/to/your-submodules
url = https://www.github.com/poanchen/your-submodules-name
Now, all you need to do is to change the repository url to the one you want. Also, you might need to change the path to your submodules in case of any submodules name changes.
That is it! All that is left with was commiting your changes.
Tada. Your project should now have a new submodules =)
Wrapping Up
Hopefully this guide has help you to replace a git submodules in a repository. Thank you for reading!
Resources
I’ll try to keep this list current and up to date. If you know of a great resource you’d like to share or notice a broken link, please let us know.


WITNESS LIST State Affairs Committee May 22, 2003 - 8:30A HB 145 Registering, but not testifying: Against: Smith, Teresa (Miller, Smith & Tysinger, P.C.), San Antonio, TX HB 649 Registering, but not testifying: On: Tessen, Robert "Sam" (Office of Rural Community Affairs), Austin, TX HB 705 Registering, but not testifying: For: Findeisen, Les (Texas Motor Transportation Association), Austin, TX Jones, Nancy (Association of Plumbing, Heating, Cooling Contractors of Texas), Austin, TX McAlister, Todd (Texas Air Conditioning Contractors Association), Austin, TX Mintz, David (Texas Apartment Association), Austin, TX HB 736 FOR: Smith, Tom "Smitty" (Public Citizen), Austin, TX Registering, but not testifying: For: Woodford, Suzy (Common Cause Texas), Austin, TX HB 833 Registering, but not testifying: For: Levy, Rick (Tx AFL-CIO), Austin, TX Smith, Teresa (MIller, Smith, & Tysinger, P.C.), San Antonio, TX Tysinger, Alan (Miller, Smith & Tysinger, P.C.), Adkins, TX HB 999 Registering, but not testifying: For: Lewis, Fred (Show Us the Money Coalition), Austin, TX Smith, Tom "Smitty" (Public Citizen), Austin, TX Woodford, Suzy (Common Cause Texas), Austin, TX HB 1053 Registering, but not testifying: For: Schneider, Rob (Consumers Union), Austin, TX HB 1163 Registering, but not testifying: For: Hanna, Mark J. (Texas Podiatric Medical Association), Austin, TX Against: Bellsnyder, Luke (Texas Association of Business), Austin, TX HB 1268 Registering, but not testifying: For: Pollard, Mike (Texas Association of Life & Health Insurers), Austin, TX On: McGiffert, Lisa (Consumers Union), Austin, TX HB 1487 FOR: Bell, Keith (Intex Electrical Contractors, Inc./ IEC of Texas), Forney, TX Boyer, Brad B. (Self), Cypress, TX Caraway, David (Bull Dog Electric), Boerne, TX Merritt, Anthony P. (Texas State Association of Electrical Workers), Nash, TX Tilley, Danny (Texas Building Trades), Austin, TX AGAINST: Austin, Patrick (Association of Minority Contractors), Houston, TX Dean, Aaron T. (Self), Conroe, TX Dickerson, E.T. (City of Houston Electrical Board), Houston, TX Douglas, Gilbert D. (City of Houston), Houston, TX Gonzales, Thomas A. (Texas Electrical Safety Association), Houston, TX Husband, Eldon W. (Self), Alvin, TX Owen, Michael G. (Electrical Training & Consulting Service), Austin, TX Paschal, Butch (Integrated Electrical Services/ Houston Stafford Electric), Stafford, TX Runyan, Ty (HCA Texas), Dallas, TX Sims, Michael (San Jacinto College), Houston, TX ON: Stabler, Lonnie (Texas Sign Association), North Richland Hills, TX Registering, but not testifying: For: Aldrich, Bill (Design Electric), Austin, TX Benke, Mike (Independent Electrical Contractors), San Antonio, TX Boyer, Mark L. (Boyer Inc.), Houston, TX Breihan, Ted (Ted Breihan Electric Co.), San Marcos, TX Broadrick, Shawn (Texas Building Trades), Waller, TX Byram, Gordon (IBEW Local 520), Austin, TX Doubek, Sr., Phillip J. (Cen Tex IEC), Austin, TX Grant, Kathy (Texas Cable & Telecommunications Association), Austin, TX Hall, Joe D. (Advanced Electric Co.), Lubbock, TX Jennings, Randy (Cen Tex IEC), Austin, TX Jones, Nancy (Associated Plumbing-Heating-Cooling Contractors of TX), Austin, TX Kelly, Wayne (Kel Tex Electric), Borger, TX Levy, Rick (TX AFL-CIO), Austin, TX McAlister, Todd (Texas Air Conditioning Contractors Association), Austin, TX Morris, Charlie (Cen Tex IEC), Austin, TX Mosteit, Michael N. (Texas State Association of Electrical Workers), Pasadena, TX Perry, Steve (Chevron Texaco), Austin, TX Pomikahl, Randy (Cen Tex IEC), Spicewood, TX Pruitt, Sarah (Texas Building Trades Council), Austin, TX Sitzes, H. Neal (IEC), Mt. Pleasant, TX Sodd, Gary (Fort Worth Chapter IEC), Arlington, TX Against: Ber, Michael N. (Self), Pinehurst, TX Bonte, Sean (Cypress Electric), Houston, TX Buchanan, William Carl (Self), Seabrook, TX Burnett, Jack (Jack Burnett Elec. Serv. Inc.), Houston, TX Crist, Britt (San Jacinto College South), Houston, TX Dean, Peggy (Deans Electrical Consulting), Conroe, TX Gagnon, Patrick R. (Self), Cedar Creek, TX Hengst, Ken (Self), Houston, TX Hughes, Jo Ann (Self), Houston, TX Hughes, Jr., Harry B. (NECA Southeast Chapter/ CUH Henderson Elec.), Houston, TX Joseph, Chau (JC Electrical Services), Houston, TX Kahn, Billy (Self), Alvin, TX Marshall, Dennis (TAG Electric), Houston, TX McKenna, T. J. (Self), Richards, TX Moshaddam, Tooraj-Tony (Light-Tech Lighting Design), Houston, TX Patterson, Marshall C. (Shep Electric), Houston, TX Robinson, Weston (Self), Houston, TX Tidden, George (Project Ltg. Co.), Katy, TX Todaro, Peter (Lapaglia Electric Co. Inc), Houston, TX Wagner, Dennis (Windrose Electric), Conroe, TX Weiman, Jr., N.A. (City of Houston), Cypress, TX Wilson, David B. (Southwest Signs), Houston, TX Winans, Jenna (IES), Houston, TX On: Kuntz, Jr., William H. (Texas Department of Licensing & Regulation), Austin, TX HB 1602 ON: Moss, Bill (Texas Ethics Commission), Austin, TX Registering, but not testifying: For: Lewis, Fred (Show Us the Money Coalition), Austin, TX Smith, Tom (Public Citizen), Austin, TX Woodford, Suzy (Common Cause Texas), Austin, TX HB 1791 FOR: Moore, Julie W. (Self), Austin, TX AGAINST: Herrmann, David (Natures Earth, Inc.), San Antonio, TX Legacy, Don (J-V Dirt & Loam), Austin, TX Registering, but not testifying: For: Pazos, Kim (Self), Del Valle, TX Reagan, Dwight (Self), Del Valle, TX Reagan, Lila (Self), Del Valle, TX Staton, Debbie (Self), Del Valle, TX HB 1797 Registering, but not testifying: For: Bellsnyder, Luke (TX Association of Business), Austin, TX Glenn, Eric (Humana), Austin, TX HB 1798 Registering, but not testifying: For: Bellsnyder, Luke (TX Association of Business), Austin, TX Glenn, Eric (Humana), Austin, TX HB 1799 Registering, but not testifying: For: Glenn, Eric (Humana), Austin, TX HB 1800 Registering, but not testifying: For: Bellsnyder, Luke (TX Association of Business), Austin, TX Glenn, Eric (Humana), Austin, TX HB 2095 FOR: Beachley, Pam (Texas Cotton Ginners Association), Austin, TX Registering, but not testifying: For: Loonam, Timothy W. (Texas Cotton Ginners Trust), Austin, TX Shores, Larry (Texas Cotton Ginners Association), Austin, TX Williams, Tony (Texas Cotton Ginners Association), Austin, TX Wilson, Ross (Texas Cattle Feeders Association), Amarillo, TX HB 2198 AGAINST: Smith, Teresa (Miller, Smith & Tysinger, P.C.), San Antonio, TX Tysinger, Alan D. (Miller, Smith & Tysinger, P.C.), Adkins, TX Registering, but not testifying: For: Huestis, Nick (The American Insurance Association), Austin, TX On: Bow, Jonathan D. (State Office of Risk Management), Austin, TX HB 2199 AGAINST: Smith, Teresa (Miller, Smith & Tysinger, P.C.), San Antonio, TX Tysinger, Alan (Miller, Smith & Tysinger), Adkins, TX Registering, but not testifying: For: Levy, Rick (TX AFL-CIO), Austin, TX Nuestis, Nick (The American Insurance Association), Austin, TX On: Bow, Jonathan D. (State Office of Risk Management), Austin, TX HB 2261 ON: Larsen, Susan (8th Court of Appeals), El Paso, TX HB 2397 Registering, but not testifying: For: Chatron, Michael (Texas Building Branch AGC), Austin, TX Jones, Nancy (Associated Plumbing-Heating-Cooling Contractors of Texas), Austin, TX McAlister, Todd (Texas Air Conditioning Contractors Association), Austin, TX Risk, Raymond (Texas Construction Association), Austin, TX Sickels, Linda (Trinity Ind. Inc.), Austin, TX Williams, Ellen (Associated Builders & Contractors of Texas), Austin, TX HB 2496 FOR: Maxey, Glen (Texas Democratic Party), Austin, TX HB 2562 FOR: Allday, Martin L. (Texas State Cemetery Committee), Austin, TX HB 2636 Registering, but not testifying: For: Woodford, Suzy (Common Cause Texas), Austin, TX HB 2912 FOR: Booth, Danny (Texas EDC), Terrell, TX Vest, Gary (Texas Economic Development Council), Paris, TX AGAINST: Cowan, Leanna (The Alvarado Public Library), Alvarado, TX Gray, Jason (City of Frisco), Frisco, TX Joyner, Jim (City of Frisco Community Development Corporation), Frisco, TX Registering, but not testifying: For: Gandy, James (Frisco Economic Development Corporation), Frisco, TX Shields, Chris (TEDSTH), Austin, TX Against: Meraz, Gloria (Texas Library Association), Austin, TX On: Moore, Jeff (Office of the Attorney General), Austin, TX HB 2947 Registering, but not testifying: For: Johnson, Karen R. (United Way of Texas & The Texas Nonprofit Policy Coalition), Austin, TX Voights, Betty (Capitol Area Planning Council), Austin, TX HB 3022 AGAINST: McGiffert, Lisa (Consumers Union), Austin, TX ON: Bingham, Bill (Texas Department of Insurance), Austin, TX Registering, but not testifying: For: Bellsnyder, Luke (TX Association of Business), Austin, TX Glenn, Eric (Humana), Austin, TX Manross, Lee (Texas Association of Health Underwriters), Austin, TX HB 3023 AGAINST: Hanna, Mark J. (Texas Society of Clinical Social Workers, TX Podiatric Medical Assoc., & TX Nurses Association), Austin, TX ON: Bingham, Bill (Texas Department of Insurance), Austin, TX Registering, but not testifying: For: Bellsnyder, Luke (Texas Association of Business), Austin, TX Glenn, Eric (Humana, Inc.), Austin, TX Manross, Lee (Texas Association of Health Underwriters), Austin, TX HB 3096 Registering, but not testifying: For: Lewis, Fred (Show Us the Money Coalition), Austin, TX Woodford, Suzy (Common Cause Texas), Austin, TX HB 3168 AGAINST: Howell, Kenneth W. (Injured Workers of Texas), San Antonio, TX Registering, but not testifying: For: Levy, Rick (TX AFL-CIO), Austin, TX Against: Smith, Teresa (Miller, Smith & Tysinger, P.C.), San Antonio, TX Tysinger, Alan (Miller, Smith & Tysinger, P.C.), Adkins, TX On: Bow, Jonathan D. (State Office of Risk Management), Austin, TX HCR 90 Registering, but not testifying: For: Bellsnyder, Luke (TX Association of Business), Austin, TX


Text Utils
Search
Success !
Your Text has been Analyzed.
×
Your Analyzed Text - {{ purpose }}
{{analyzed_text}}


'League of Legends' drops animated MV and live performance of True Damage's 'GIANTS' featuring (G)I-DLE's Soyeon
by danisurstThe 2019 'League of Legends' World Championship's opening ceremony has finally begun!
Immediately after the event began to air, Riot Games released the official music video for "GIANTS," this year's special single featuring virtual hip-hop group True Damage, voiced by (G)I-DLE's Soyeon, Duckwrth, Thutmose, Keke Palmer, and Becky G. The single is meant to promote the release of new in-game skins, similar to how K/DA's "POP/STARS" promoted a special 'popstar' skin. While most of the lineup is new, Soyeon is back to reprise her role as the voice of Akali.
True Damage came together to perform the song as part of the opening ceremony, where the artists behind the voices stood on the same stage alongside AU versions of their characters.
Check out the music video and full live performance here!


{{ define "main" }}
Dakota Berg looked at the rusted rock in his hands and felt irritable. He walked over to the window and reflected on his damp surroundings. He had always hated cold millennium falcon with its ratty, rough rust bucket. It was a place that encouraged his tendency to feel irritable. Then he saw something in the distance, or rather someone. It was the figure of Mark Blackman.  Dakota gulped. He glanced at his own reflection. He was a snotty, smart, cocoa drinker with slimy abs and ginger feet. His friends saw him as a helpful, hurt hero. Once, he had even brought a hissing injured bird back from the brink of death. But not even a snotty person who had once brought a hissing injured bird back from the brink of death, was prepared for what Mark had in store today. The snow flurried like talking frogs, making Dakota stressed. As Dakota stepped outside and Mark came closer, he could see the spilt glint in his eye. "I am here because I want wifi password," Mark bellowed, in a friendly tone. He slammed his fist against Dakota's chest, with the force of 1516 donkeys.  Dakota looked back, even more stressed and still fingering the rusted rock. "Mark, dakota, I am your father," he replied. They looked at each other with worried feelings, like two homely, high humming birds laughing at a very brave birthday party, which had classical music playing in the background and two patient uncles jogging to the beat.  He held out his hand. "Let's not fight," he whispered, gently. "Hmph," pondered Mark. "Please?" begged Dakota with puppy dog eyes. Mark looked jumpy, his body blushing like a barbecued, bumpy banana. Then Mark came inside for a nice mug of cocoa. THE END
I used a short story generator: Click here


Entelect Employee Fines Board {{fc.date | date:'yyyy'}}
{{fine.ReceiverDisplayName}}
has received a fine
for {{fine.Reason}}
via {{fine.Platform || 'Web front end'}}
from
{{fine.IssuerDisplayName}}
{{fine.ReceiverDisplayName}}
has paid {{fine.TotalPaid}} fines


Que Ngoc Hai to join Dang Van Lam in Thai League?
The SMM Sport Thailand wrote that Muangthong United is eyeing midfielder Que Ngoc Hai of Vietnam NT.
by Thể thao 247, https://www.facebook.com/thethao247.vnQue Ngoc Hai had an outstanding display at World Cup 2022 qualifiers. He also helped Vietnam keep cleansheet as much as possible as since Vietnam only conceded a goal in 5 matches. Vietnam captain also scored an important goal in the 3-1 victory over Indonesia.
The SMM Sport wrote: “SCG Muangthong United wants to recuit Vietnam captain midfielder Que ngoc Hai, who displayed well in the 2 draws to Thailand. The club hopes to get his signings like Dang Van Lam’s last year. Que Ngoc Hai, 26, is 1.83 meters tall. He has serve the national team since 2014 and is playing for Viettel at V-League.”
Muangthong United is Dang Van Lam’s current club, one of the most traditional teams in Thai League. This season, they finished 5th with 46 points after their embarrasing period at the beginning of the season under coach Alexandre Gama’s lead.
Dang Van Lam has a successful season in Muang Thong United. The 26-year-old played full 30 matches, a record of a Vietnamese players overseas.


|
EvasionPaths
|
This class provides the basic interface for a model of motion. More...
Inherits ABC.
Inherited by BilliardMotion, and BrownianMotion.
Public Member Functions | |
| None | __init__ (self, float dt, Boundary boundary) |
| Initialize motion model with boundary and time-scale. More... | |
| tuple | update_point (self, tuple pt, int index) |
| Update an individual point. More... | |
| tuple | reflect (self, tuple pt, int index) |
| Move points back in domain. More... | |
| list | update_points (self, list old_points) |
| Update all non-fence points. More... | |
Public Attributes | |
| dt | |
| boundary | |
This class provides the basic interface for a model of motion.
it should do two things, update the point positions, and reflect points off of the boundary. Because the reflection depends on the boundary, motion models and boundaries must be compatible.
| None __init__ | ( | self, | |
| float | dt, | ||
| Boundary | boundary | ||
| ) |
Initialize motion model with boundary and time-scale.
| tuple reflect | ( | self, | |
| tuple | pt, | ||
| int | index | ||
| ) |
Move points back in domain.
If a point is moved outside of the domain, this function provides a rule on how to move it back inside the domain. The index is the position in the set of ALL points, and can be useful in looking up sensor specific data. Reflect should return position of point in the domain.
Reimplemented in BilliardMotion.
| tuple update_point | ( | self, | |
| tuple | pt, | ||
| int | index | ||
| ) |
Update an individual point.
This function will be called on all points. reflection should be separate. The index is the position in the set of ALL points, and can be useful in looking up sensor specific data. Will return new position or sensor.
Reimplemented in BilliardMotion.
| list update_points | ( | self, | |
| list | old_points | ||
| ) |
Update all non-fence points.
If a point is not in the domain, reflect. It is sometimes necessary to override this class method since this method is called only once per time-step.
Reimplemented in RunAndTumble.
| boundary |
| dt |


--- layout: post status: publish published: true title: Zambrano should stay on the North Side author: display_name: Corey Fineran login: Corey email<EMAIL_ADDRESS>url: '' author_login: Corey author_email<EMAIL_ADDRESS>wordpress_id: 1504 wordpress_url: http://ivyenvy.com/?p=1504 date: '2009-09-26 07:26:00 +0000' date_gmt: '2009-09-26 13:26:00 +0000' categories: - Offense - Starting Pitching tags: - Carlos Zambrano - San Francisco - Milton Bradley comments: - id: 852 author: Andy author_email<EMAIL_ADDRESS>author_url: http://ivyenvy.com date: '2009-09-26 08:08:42 +0000' date_gmt: '2009-09-26 14:08:42 +0000' content: I watched the game... Zambrano was pretty fun to watch. They had this camera angle behind the plate that really showed the break on his pitches, and they looked sick or filthy or whatever (in the parlance of our times). ---
I was unable to watch Zambrano's gem in San Francisco last night because I'm camping. Yet, I can take the time to comment on it...ah, technology and a wise camping location.
But last night is exactly why Zambrano needs to be kept with the Cubs. He has proven that he can be an elite pitcher and it's quite valuable to a team that can't manufacture offense to have a pitcher that has a career batting average of .235 and has the power to poke one over the fence.
I am not ignoring the fact that Zambrano can be a head-case. But if we as Cubs fans can think that we can ditch Bradley and Zambrano and never have to worry about nut-case players and grown men that need to be pampered, we are wrong. This is what professional sports is and it's only going to get worse. We can lose a ton of money and let Bradley go, that's fine. But I think ditching Zambrano would be a great mistake.


[gecode-users] Gecode Python Set Variables
Luca Di Gaspero
l.digaspero at uniud.it
Mon Oct 24 23:13:51 CEST 2011
Hello,
is there the possibility to define and use set variables with the python bindings? Could you provide a small example?
Thanks in advance,
Luca
More information about the users
mailing list


You can select from different transitions, like:
None -
Fade -
Slide -
Convex -
Concave -
Zoom
reveal.js comes with a few themes built in:
Black (default) -
White -
League -
Sky -
Beige -
Simple
Serif -
Blood -
Night -
Moon -
Solarized
<section data-background-video="video.mp4,video.webm">


MALLOC_STATS
Section: Linux Programmer's Manual (3)
Updated: 2012-05-06
Index
Return to Main Contents
NAME
malloc_stats - print memory allocation statistics
SYNOPSIS
#include <malloc.h>
void malloc_stats(void);
DESCRIPTION
The
malloc_stats()
function prints (on standard error) statistics about memory allocated by
malloc(3)
and related functions.
For each arena (allocation area), this function prints
the total amount of memory allocated
and the total number of bytes consumed by in-use allocations.
(These two values correspond to the
arena
and
uordblks
fields retrieved by
mallinfo(3).)
In addition,
the function prints the sum of these two statistics for all arenas,
and the maximum number of blocks and bytes that were ever simultaneously
allocated using
mmap(2).
CONFORMING TO
This function is a GNU extension.
NOTES
More detailed information about memory allocations in the main arena
can be obtained using
mallinfo(3).
SEE ALSO
mmap(2),
mallinfo(3),
malloc(3),
malloc_info(3),
mallopt(3)
Index
- NAME
-
- SYNOPSIS
-
- DESCRIPTION
-
- CONFORMING TO
-
- NOTES
-
- SEE ALSO
-
This document was created by
man2html,
using the manual pages.
Time: 02:55:03 GMT, September 18, 2014


- Batch Data Vs Streaming Data …
- Indefinite flow of data …
- #Process_Pattern_1 : Process data as and when it is available.
Recently my friend has asked me, “Dude, it’s been quite some time that you have been working on Big Data and related software stacks. I have a simple problem and could you please educate me on these jargons and provide a suitable solution ? “
The inherent repulsive behaviour in me have put me in a defensive mode but I somehow mustered enough courage to hear the problem statement out and it goes like this :-
"Let's assume that you have a stream of data flowing in and I want to put the data into different buckets by aligning with the following rules :-
1. The records in a given bucket shouldn't be duplicates
2. All the incoming data should be emitted out i.e the collection of data in different buckets will be the same as incoming data.
Once, the data is arranged in different buckets, we should be able to call a Sink. Let's assume this as an HTTP API Service / HDFS output location.
Whenever I am encountered with a problem, I will try to picturise the statement in my mind (I assume our brain has some ‘magical’ power to process and give out results when we lift problem statements into diagrams with box and connectors :) ) and that goes like this :-
Ok, we are successful in plotting the problem statements using box and connectors. But, I already find myself bombarded with lot of questions which I am not certain about.
- What is a streaming data ?
- What is the best mechanism to ingest it.
- Even if I find a mechanism to ingest the data how much of the incoming data will can be processed at a time ?
- What all things can be done with the streaming dataset and methods available for sink ?
We will try to answer each of these questions at different points in the journey.
As we all do, my immediate reflex was to google on these jargons and without much hassle I was able to come up with the following conclusions.
Batch Data Vs Streaming Data …
In real world data is generated majorly in two ways, end result of a statistical analysis or by the end result of an event. Lets say, if I am periodically checking the account balances of customers in a bank or memory usage in a computer and records it as a dataset then it can be fairly be categorised as dataset derived out of statistical analysis. There is another class of dataset generated out of instances like data generated by sensors, security systems, medical devices based on events happening at their habitat. We couldn’t simply predict the occurrence interval of those data. For instance, lets treat the webserver logs as a dataset and the data will be continuously generated whenever someone accesses any of the websites hosted on that server. This continuous flow of events can be called as streaming dataset. In a typical Big Data Environment, the need for performing real-time stream processing is rapidly increasing and below is some witty but striking example to reason the statement.
Indefinite flow of data …
Now that we know the difference between the Batch Data and Streaming data processing, the very first concern that would come to our mind is its behaviour - the indefinite flow of incoming data. We should have a mechanism to make sure that all the incoming data is processed as and when it is available. In layman terms, I can think of couple of ways to handle this scenario
- Have a processing layer capable of processing the data as and when it is available. - #Process_Pattern_1
- Have a queueing system in place to hold the incoming data and let the processing layer source the data from there and process. #Process_Pattern_2
On further research, I narrowed down my options for the Processing Layer. We can either use Spark Streaming / Storm as a processing layer and and Kafka / Flume as queuing system to control the flow of incoming data before it is served for processing.
But, in this post we will be concentrating only on the Spark Streaming + Kafka Integration to implement the solution to the problem we had started with.
#Process_Pattern_1 : Process data as and when it is available.
Before coming into a solution, we will try to get a basic understanding about the Processing Layer (Spark Streaming) using a simple network word count application. Let’s assume that we have a netcat server as a source for streaming dataset and our aim is to compute the word count on the incoming data. In the case of batch mode word count, Simple Word Count using Spark, we were reading in the source dataset, doing the RDD transformations and computes the word count on the whole dataset and finally the results were written on to the disk. In that case the actual computation was done on the whole dataset. But, when it comes to the real time streaming, we do not know what can be the size of the dataset and when should the computation on that defined dataset be emitted out. This is where the relevance of a ‘streaming-batch’(think about separation of concerns :) ) comes into picture.
Yes, you guessed it right. In a streaming context it is not the amount of data that defines a batch but rather it’s the time duration that defines it. If you split the timeline into intervals of say 1s, 2s or 3s etc then we can very well define a batch as the totality of data that came over that period of time. But the Spark Streaming optimizes the streaming batches by introducing one more concept called DStreams. Spark Streaming divides the data stream into batches of X seconds called Dstreams(Discretized Streams), which internally is a sequence of RDDs, one for each batch interval. Each RDD contains the records received during the batch interval.
Before going further into any more discussion, we will switch our context back to the WordCount Program (Yep, Bottom Down approach). Suppose we have a streaming data source(netcat, for the time being) and we want to perform the word count on the streaming dataset. The implementation is given below for reference.
// Create the context with a 1 second batch size
val sparkConf = new SparkConf().setMaster(args(0)).setAppName("NetworkWordCount")
val ssc = new StreamingContext(sparkConf, Seconds(1))
// Create a socket stream(ReceiverInputDStream) on target ip:port
val lines = ssc.socketTextStream(args(1), args(2).toInt, StorageLevel.MEMORY_ONLY)
// Split words by space to form DStream[String]
val words = lines.flatMap(_.split(" "))
// count the words to form DStream[(String, Int)]
val wordCounts = words.map(x => (x, 1)).reduceByKey(_ + _)
// print the word count in the batch
wordCounts.print()
ssc.start()
ssc.awaitTermination()
Internally, it works as follows. Spark Streaming receives live input data streams and divides the data into batches, then the sequence of RDDS(DStreams) will then be processed by the Spark engine to generate the final stream of results. There are two types of operations on DStreams i.e transformations and output operations. Every Spark Streaming application processes the DStream RDDs using Spark transformations which create new RDDs. Any operation applied on a DStream translates to operations on the underlying RDDs, which in turn, applies the transformation to the elements of the RDD. Output operations, like saving the HDFS or calling an external API will produce output in batches.
Yes, the opportunist in you have guessed it right, once we have a sequence of RDDS - you are empowered and transcended to a a world where you are free to do anything which you can perform on an RDD - be it MLlib, Graph and you name it - Awesomeness!
Something is worrying You!
Yes, from the top of my head, I could sense a lot of questions cooking up.
- Will I be able to process all the data which streams in ?
- what all things have been considered for the fault-tolerance while processing this fast paced data ingest
- Who will be responsible for receiving the data etc.
Ok, since everything ultimately boiling down to RDD processing, we very well know that the processing will ultimately happen in Spark Driver Program and Executors.
Let’s try to solve the questions in the chronological order of relevance and see whether we can come up with some answers. In that case the very first question would be how will be responsible for receiving the data.
Depending upon the type of input streaming data source, the corresponding DStream is associated with a Receiver object which receives the data from a source and stores it in Spark’s memory for processing. Spark Streaming provides two categories of built-in streaming sources.
- Basic sources: Sources directly available in the StreamingContext API. Examples: file systems, and socket connections.
- Advanced sources: Sources like Kafka, Flume, Kinesis, etc. are available through extra utility classes.
In the current Context(Network Word Count), we are using the ReceiverInputDStream for the Socket Stream Source. The Receivers are long running process in one of the Executors and its life span will be as long as the driver program is alive. The Receiver receives data from socket connection and separates them into blocks. This generated block of data will be replicated among different executor memory. On every batch interval the Driver will launch tasks to process the blocks of data and the subsequent results will be sinked to the destination location.
Okay, now that we have the answer for the question on who will be responsible from receiving the streaming data, the next intriguing question would be on the fault-tolerance. We know that everything is now boiled down to Spark native habitat the possible faulty prone scenarios that can occur would be : -
-
What if the Executor Fails : -
If the Executor is failed then the Receiver and the stored memory blocks will be lost and then the Driver will trigger a new receiver and the tasks will be resumed using the replicated memory blocks.
-
What if the Driver Program Fails : -
When the Driver Program is failed, then the corresponding Executors as well as the computations, and all the stored memory blocks will be lost. In order to recover from that, Spark provides a feature called DStream Checkpointing. This will enable a periodic storage of DAG of DStreams to fault tolerant storage(HDFS). So when the Driver, Receiver and Executors are restarted, the Active Driver program can make use of this persisted Checkpoint state to resume the processing.
Even if we are able to restart the Checkpoint state and start processing from the previous state with the new Active Executor, Driver program, and Receiver - we need to have a mechanism to recover the memory blocks at that state. In order to achieve this, Spark comes with a feature called Write Ahead Log (WAL) - This will synchronously saves memory blocks into fault-tolerant storage.
To enable the whole fault-tolerance, we should perform the following changes to our Network WordCount Program : -
- Enable Checkpointing
- Enable WAL in SparkConf
- Disable in-memory Replication
- Receiver should be reliable : Acknowledge Source only after data is saved to WAL. Untracked data will be replayed from source.
If you apply the above fault-tolerance changes then the whole NetworkWordCount program will look something like this : -
def main(args: Array[String]) {
if (args.length < 3) {
System.err.println("Usage: NetworkWordCount <master> <hostname> <port> <duration> <checkpoint directory>")
System.exit(1)
}
StreamingExamples.setStreamingLogLevels()
val ssc = StreamingContext.getOrCreate(args(4), () => createContext(args))
ssc.start()
ssc.awaitTermination()
}
def createContext(args: Array[String]) = {
// Create the context with a 1 second batch size
val sparkConf = new SparkConf().setMaster(args(0)).setAppName("NetworkWordCount")
sparkConf.set("spark.streaming.receiver.writeAheadLog.enable", "true")
val ssc = new StreamingContext(sparkConf, Seconds(args(3).toInt))
// Create a socket stream(ReceiverInputDStream) on target ip:port
val lines = ssc.socketTextStream(args(1), args(2).toInt, StorageLevel.MEMORY_AND_DISK_SER)
// Split words by space to form DStream[String]
val words = lines.flatMap(_.split(" "))
// count the words to form DStream[(String, Int)]
val wordCounts = words.map(x => (x, 1)).reduceByKey(_ + _)
wordCounts.print()
ssc.checkpoint(args(4))
ssc
}
Have you noticed something fishy in the existing implementation - Hmm, A reliable friend - Yes, a reliable source who can acknowledge our hope, well-being and happiness :).
We will talk about that in the sequel… To Be Continued! :)


There's so much good
Last updated: 4/10/20
I’ve been protecting myself by not checking the news. I know there’s a lot of not so good things happening due to the coronavirus, and I think the magnitude of it all is greater than I comprehend right now. However, for my own mental health, I’ve been doing my own thing at home. Newsletters from people I admire and respect, Instagram, Twitter, Facebook and occasionally the local Chinese news have been my news source, which I check 1-2 times a day.
I realized that I’ve surrounded myself with people who are serving others and amplifying the incredible people around the world who are serving others. With that, I’m still filled with hope and positivity from all the positive activities I’m virtually surrounded by:
- people are connecting with others. we’re spending time with families, finding ways to connect with friends, learning to check in on people we know.
- communities are stepping up. in my neighborhood, people are offering to help older people purchase goods, share information about what’s still available where, share resources and offer services for those who are in need.
- music is uplifting people in their homes. dnice’s homeschool (aka club quarantine). singers’ free concerts on Insta.
- celebration of food. chefs are cooking in their homes and sharing the experience and lessons with others. many chefs and organizations are offering free meals to the community. schools are offering free meals for children and families.
- love for farmers. so many people are finding ways to support their local farmers directly. farmers are still farming. they’re literally the heart and blood of our food system, bless them.
- with so many people off roads, not traveling in planes, not outside (and littering), our air is cleaner. waters are cleaner.
- downtime for many. we’re conditioned to feel like we have to always be busy, doing something. and i think this is an important time to give ourselves a break, relax, take care of ourselves.
- people are caring for their personal health. exercising. cooking for themselves. reading. journaling. spending time with others. dancing. singing. and so much more.
- more and more attention, respect, and gratitude for all our service workers and how integral they are to our daily lives. the number of funds and donations to support those impacted by the pandemic is on the up and up.
- massive gratitude is spreading to heathcare providers and for all they do.
- appreciation teachers, these amazing people, are on the rise as parents spend 24/7 with their babies and some even attempt homeschooling. ain’t that easy.
- energy is being directed to tending our land. more of my neighbors are starting to garden with their time. i am too!
- people (old and young) with sewing skills, small businesses, small distributors are working together to hand make masks to distribute to healthcare workers.
- drivers, airlines, transportation businesses are putting their resources to use to distribute masks, ventilators, food, and more.
- people are rallying for local restaurants, supporting them through donations to feed people in need.
- people are donating, cooking, distributing, and contributing in many forms to small and big community efforts to feed senior citizens, healthcare workers, and anyone in need of food.
- our broken healthcare, financial, and government system’s flaws are becoming more apparent. and we are calling it out even more. grilling time.
- people are collectively staying at home to flatten the curve.
- hotels are lighting up vacant rooms in the shape of hearts, sending love to healthcare workers.


1 write to _measureLines
Microsoft.PowerShell.Commands.Utility (1)
commands\utility\Measure-Object.cs (1)
384
_measureLines
= value;
4 references to _measureLines
Microsoft.PowerShell.Commands.Utility (4)
commands\utility\Measure-Object.cs (4)
379
return
_measureLines
;
572
if (_measureCharacters || _measureWords ||
_measureLines
)
759
if (
_measureLines
)
955
if (
_measureLines
)