cvs2svn is a program that can be used to migrate a CVS repository to Subversion (otherwise known as "SVN") or git. Documentation:
cvs2svn requires the following:
cvs2svn does not support conversion of CVSNT repositories. Some people have indicated success with such conversions, while others have had problems. In other words, such conversions, even if apparently successful, should be checked carefully before use. See the FAQ for more information.
If you're looking to switch an existing CVS repository to Subversion, you have a number of choices for migrating your existing CVS data to a Subversion repository, depending on your needs.
There are a few basic routes to choose when switching from CVS to Subversion, and the one you choose will depend on how much historical data you want in your Subversion repository. You may be content to refer to your existing (soon-to-be-converted-to-read-only) CVS repository for "pre-Subversion" data and start working with a new Subversion repository.  Then again, perhaps you want a conversion somewhere in between these two. Based on these needs, we've come up with these different recommended paths for converting your CVS repository to a Subversion repository.

This is the quickest and easiest way to get started in your new repository.  Typically, if you top-skim, that means you'll be either be keeping your old CVS repository around as a read-only reference for older data or just tossing that historical data outright (Note to you data packrats who have just stopped breathing, please take a deep breath and put down the letter opener. You don't have to do this yourself--it's just that some people don't feel the same way you do about historical data. They're really not bad people. Really.).
Pros: Quick, easy, convenient, results in a very compact and "neat" Subversion repository.
Cons: You've got no historical data, no branches, and no tags in your Subversion repository. If you want any of this data, you'll have to go back into the CVS Repository and get it.
If you decide that you'd like to have the main development line of your historical data in your Subversion repository but don't need to carry over the tags and branches, you may want to skip converting your CVS tags and branches entirely and only convert the "trunk" of your repository. To do this, you'll use the --trunk-only switch to cvs2svn.
Pros:Saves disk space in your new Subversion repository. Attractive to neatniks.
Cons: You've got no branches and no tags in your Subversion repository.
Let's say, for example, that you want to convert your CVS repository's historical data but you have no use for the myriad daily build tags that you've got in your CVS repository. In addition to that, you want some branches but would prefer to ignore others. In this case, you'll want to use the --exclude switch to instruct cvs2svn which branches and tags it should ignore.
Pros:You only get what you want from your CVS repository. Saves a some space.
Cons:If you forgot something, you'll have to go to your CVS repository.
 This is cvs2svn's default behavior.
Pros: Converts every last byte of your CVS repository.
Cons: Requires more disk space.
You can convert your repository (or repositories) piece by piece using a combination of the above .
Pros: You get exactly what you want.
Cons: Importing converted repositories multiple times into a single Subversion repository will likely break date-based range commands (e.g. svn diff -r {2002-02-17:2002-03-18}) since Subversion does a binary search through the repository for dates. While this is not the end of the world, it can be a minor inconvenience.
If you have many diverse projects in your CVS repository and you don't want to move them all to Subversion at once, you may want to convert to Subversion one project at a time. This requires a few extra steps, but it can make the conversion of a large CVS repository much more manageable. See How can I convert my CVS repository one module at a time? on the cvs2svn FAQ for a detailed example on converting your CVS repository one project at a time.
Pros:Allows multiple projects in a single repository to convert to Subversion according to a schedule that works best for them.
Cons:Requires some extra steps to accomplish the conversion. Importing converted repositories multiple times into a single Subversion repository will likely break date-based range commands (e.g. svn diff -r {2002-02-17:2002-03-18}) since Subversion does a binary search through the repository for dates. While this is not the end of the world, it can be a minor inconvenience.
There are a number of reasons that you may need to prep your CVS Repository. If you decide that you need to change part of your CVS repository, we strongly recommend working on a copy of it instead of working on the real thing. cvs2svn itself does not make any changes to your CVS repository, but if you start moving things around and deleting things in a CVS repository, it's all too easy to shoot yourself in the foot.
One of the most important topics to consider when converting a repository is the distinction between binary and text files. If you accidentally treat a binary file as text your repository contents will be corrupted.
Text files are handled differently than binary files by both CVS and Subversion. When a text file is checked out, the character used to denote the end of line ("EOL") is converted to the local computer's format. This is usually the most convenient behavior for text files. Moreover, both CVS and Subversion allow "keywords" in text files (such as $Id$), which are expanded with version control information when the file is checked out. However, if line-end translation or keyword expansion is applied to a binary file, the file will usually be corrupted.
CVS treats a file as text unless you specifically tell it that the file is binary. You can tell CVS that a file is binary by using the command cvs admin -kb filename. But often CVS users forget to specify which files are binary, and as long as the repository is only used under Unix, they may never notice a problem, because the internal format of CVS is the same as the Unix format. But Subversion is not as forgiving as CVS if you tell it to treat a binary file as text.
If you have been conscientious about marking files as binary in CVS, then you should be able to use --default-eol=native. If you have been sloppy, then you have a few choices:
If you want to convert a subdirectory in your repository, you can just point cvs2svn at the subdirectory and go. There is no need to delete the unwanted directories from the CVS repository.
If the subdirectory that you are converting contains any files that you don't want converted into your new Subversion repository, you should delete them or move them aside. Such files can be deleted from HEAD after the conversion, but they will still be visible in the repository history.
Lastly, even though you can move and copy files and directories around in Subversion, you may want to do some rearranging of project directories before running your conversion to get the desired repository project organization.
There are two ways to specify the options that define a conversion: via the cvs2svn command line, or via an options file. The command line is useful for simple conversions, but the options file method is recommended for nontrivial conversions as it gives the user more flexibility.
A command-line conversion allows the use of all of the command line options listed below (except for --options). This method allows almost all of the built-in conversion options to be selected, with the primary limitation that it does not support multiproject conversions. However, it may require a long command line to specify all of the options for a complicated conversion.
The options file method allows full control of the conversion process, including multiproject conversions. It also allows expert users to customize the conversion even more radically by writing Python code. Finally, the options file used in the conversion can be retained as permanent record of the options used in a conversion.
To use the options file method, you need to create a file defining all of the options that are to be used for the conversion. A heavily-commented sample options file, cvs2svn-example.options, is included in the cvs2svn distribution. The easiest way to create your own options file is to make a copy of the sample file and modify it as directed by the comments in that file.
Note: The options file format changes frequently. Please be sure to base your options file on the cvs2svn-example.options file from the version of cvs2svn that you plan to use.
To start a conversion using an options file, invoke cvs2svn like this:
$ cvs2svn --options=OPTIONSFILE
Only the following options are allowed in combination with --options: -h/--help, --help-passes, --version, -v/--verbose, -q/--quiet, -p/--pass/--passes, --dry-run, and --profile.
cvs2svn converts CVS tags and branches into Subversion tags and branches. This section discusses issues related to symbol handling.
HINT: If there are problems with symbol usage in your repository, they are usually reported during CollateSymbolsPass of the conversion, causing the conversion to be interrupted. However, it is not necessary to restart the whole conversion to fix the problems. Usually it is adequate to adjust the symbol-handling options then re-start cvs2svn starting at CollateSymbolsPass, by adding the option "-p CollateSymbolsPass:". This trick can save a lot of time if you have a large repository, as it might take a few iterations before you find the best set of options to convert your repository.
cvs2svn converts CVS branches and tags into Subversion branches and tags following the standard Subversion convention. For single-project conversions, the default is to put the trunk, branches, and tags directories at the top level of the repository tree, though this behavior can be changed by using the --trunk, --branches, and --tags options. For multiproject conversions, you must specify the location of each project's trunk, branches, and tags directory in the options file; repository layout strategies are discussed in the Subversion book. For even finer control over the conversion, you can use a --symbol-hints file to specify the SVN path to be used for each CVS tag and branch.
Often a CVS repository contains tags and branches that will not be needed after the conversion to Subversion. You can instruct cvs2svn to exclude such symbols from the conversion, in which case they will not be present in the resulting Subversion repository. Please be careful when doing this; excluding symbols causes information that was present in CVS to be omitted in Subversion, thereby discarding potentially useful historical information. Also be aware that if you exclude a branch, then all CVS revisions that were committed to that branch will also be excluded.
To exclude a tag or branch, use the option --exclude=SYMBOL. You can also exclude a whole group of symbols matching a specified regular expression; for example, --exclude='RELEASE_0_.*'. (The regular expression has to match the whole symbol name for the rule to apply.)
However, please note the following restriction. If a branch has a subbranch or a tag on it, then the branch cannot be excluded unless the dependent symbol is also excluded. cvs2svn checks for this situation; if it occurs then CollateSymbolsPass outputs an error message like the following:
ERROR: The branch 'BRANCH' cannot be excluded because the following symbols depend on it: 'TAG' 'SUBBRANCH'
In such a case you can either exclude the dependent symbol(s) (in this case by using --exclude=TAG --exclude=SUBBRANCH) or not exclude 'BRANCH'.
There is one more special case related to branch handling. A vendor branch is a CVS branch that is used to track source code received from an outside source. A vendor branch typically has CVS branch number 1.1.1 and revision numbers <IP_ADDRESS>, <IP_ADDRESS>, etc. Vendor branches are created automatically whenever the cvs import command is used. Vendor branches have the strange property that, under certain circumstances, a file that appears on a vendor branch also implicitly exists on trunk. cvs2svn knows all about vendor branches and does its best to ensure that a file that appears on a vendor branch is also copied to trunk, to give Subversion behavior that is as close as possible to the CVS behavior.
However, often vendor branches exist for reasons unrelated to tracking outside sources. Indeed, some CVS documentation recommends using the cvs import command to import your own code into your CVS repository (which is arguably a misuse of the cvs import command). Vendor branches created by this practice are useless and would only serve to clutter up your Subversion repository. Therefore, cvs2svn allows vendor branches to be excluded, in which case the vendor branch revisions are grafted onto the history of trunk. This is allowed even if other branches or tags appear to sprout from the vendor branch, in which case the dependent tags are grafted to trunk as well. Such branches can be recognized in the --write-symbol-info by looking for a symbol that is a "pure import" in the same number of files that it appears as a branch. It is typically advantageous to exclude such branches.
In CVS, the same symbol can appear as a tag in some files (e.g., cvs tag SYMBOL file1.txt) and a branch in others (e.g., cvs tag -b SYMBOL file2.txt). Subversion takes a more global view of your repository, and therefore works better when each symbol is used in a self-consistent way--either always as a branch or always as a tag. cvs2svn provides features to help you resolve these ambiguities.
If your repository contains inconsistently-used symbols, then CollateSymbolsPass, by default, uses heuristics to decide which symbols to convert as branches and which as tags. Often this behavior will be adequate, and you don't have to do anything special. You can use the --write-symbol-info=filename option to cause cvs2svn to list all of the symbols in your repository and how it chose to convert them to filename.
However, if you want to take finer control over how symbols are converted, you can do so. The first step is probably to change the default symbol handling style from heuristic (the default value) to strict using the option --symbol-default=strict. With the strict setting, cvs2svn prints error messages and aborts the conversion if there are any ambiguous symbols. The error messages look like this:
ERROR: It is not clear how the following symbols should be converted. Use --symbol-hints, --force-tag, --force-branch, --exclude, and/or --symbol-default to resolve the ambiguity. 'SYMBOL1' is a tag in 1 files, a branch in 2 files and has commits in 0 files 'SYMBOL2' is a tag in 2 files, a branch in 1 files and has commits in 0 files 'SYMBOL3' is a tag in 1 files, a branch in 2 files and has commits in 1 files
You have to tell cvs2svn how to fix the inconsistencies then restart the conversion at CollateSymbolsPass.
There are three ways to deal with an inconsistent symbol: treat it as a tag, treat it as a branch, or exclude it from the conversion altogether.
In the example above, the symbol 'SYMBOL1' was used as a branch in two files but used as a tag in only one file. Therefore, it might make sense to convert it as a branch, by using the option --force-branch=SYMBOL1. However, no revisions were committed on this branch, so it would also be possible to convert it as a tag, by using the option --force-tag=SYMBOL1. If the symbol is not needed at all, it can be excluded by using --exclude=SYMBOL1.
Similarly, 'SYMBOL2' was used more often as a tag, but can still be converted as a branch or a tag, or excluded.
SYMBOL3, on the other hand, was sometimes used as a branch, and at least one revision was committed on the branch. It can be converted as a branch, using --force-branch=SYMBOL3. But it cannot be converted as a tag (because tags are not allowed to have revisions on them). If it is excluded, using --exclude=SYMBOL3, then both the branch and the revisions on the branch will be left out of the Subversion repository.
If you are not so picky about which symbols are converted as tags and which as branches, you can ask cvs2svn to decide by itself. To do this, specify the --symbol-default=OPTION, where OPTION can be either "heuristic" (the default; decide how to treat each ambiguous symbol based on whether it was used more often as a branch or as a tag in CVS), "branch" (treat every ambiguous symbol as a branch), or "tag" (treat every ambiguous symbol as a tag). You can use the --force-branch and --force-tag options to specify the treatment of particular symbols, in combination with --symbol-default to specify the default to be used for other ambiguous symbols.
Finally, you can have cvs2svn write a text file showing how each symbol was converted by using the --write-symbol-info option. If you disagree with any of cvs2svn's choices, you can make a copy of this file, edit it, then pass it to cvs2svn by using the --symbol-hints option. In this manner you can influence how each symbol is converted and also the parent line of development of each symbol (the line of development from which the symbol sprouts).
|
USAGE: cvs2svn [OPTIONS]... [-s SVN-REPOS-PATH|--dumpfile=PATH|--dry-run] CVS-REPOS-PATH cvs2svn [OPTIONS]... --options=PATH |
|
| CVS-REPOS-PATH | The filesystem path of the part of the CVS repository that you want to convert. It is not possible to convert a CVS repository to which you only have remote access; see the FAQ for details. This doesn't have to be the top level directory of a CVS repository; it can point at a project within a repository, in which case only that project will be converted. This path or one of its parent directories has to contain a subdirectory called CVSROOT (though the CVSROOT directory can be empty). |
| Configuration via options file | |
|---|---|
| --options=PATH | Read the conversion options from the specified file. See section options file method for more information. |
| Output options | |
| -s PATH --svnrepos PATH |
Write the output of the conversion into a Subversion repository located at PATH. This option causes a new Subversion repository to be created at PATH unless the --existing-svnrepos option is also used. |
| --existing-svnrepos | Load the converted CVS repository into an existing Subversion repository, instead of creating a new repository. (This option should be used in combination with -s/--svnrepos.) The repository must either be empty or contain no paths that overlap with those that will result from the conversion. Please note that you need write permission for the repository files. |
| --fs-type=TYPE | Pass the --fs-type=TYPE option to "svnadmin create" if creating a new Subversion repository. |
| --bdb-txn-nosync | Pass the --bdb-txn-nosync switch to "svnadmin create" if creating a new Subversion repository. |
| --create-option=OPT | Pass OPT to "svnadmin create" if creating a new Subversion repository (can be specified multiple times to pass multiple options). |
| --dumpfile=PATH | Output the converted CVS repository into a Subversion dumpfile instead of a Subversion repository (useful for importing a CVS repository into an existing Subversion repository). PATH is the filename in which to store the dumpfile. |
| --dry-run | Do not create a repository or a dumpfile; just print the details of what cvs2svn would do if it were really converting your repository. |
| Conversion options | |
| --trunk-only | Convert only the main line of development from the CVS repository (commonly referred to in Subversion parlance as "trunk"), ignoring all tags and branches. |
| --trunk=PATH | The top-level path to use for trunk in the Subversion repository. The default value is "trunk". |
| --branches=PATH | The top-level path to use for branches in the Subversion repository. The default value is "branches". |
| --tags=PATH | The top-level path to use for tags in the Subversion repository. The default value is "tags". |
| --include-empty-directories | Treat empty subdirectories within the CVS repository as actual directories, creating them when the parent directory is created and removing them if and when the parent directory is pruned. |
| --no-prune | When all files are deleted from a directory in the Subversion repository, don't delete the empty directory (the default is to delete any empty directories. |
| --encoding=ENC | Use ENC as the encoding for filenames, log messages, and author names in the CVS repos. (By using an --options file, it is possible to specify one set of encodings to use for filenames and a second set for log messages and author names.) This option may be specified multiple times, in which case the encodings are tried in order until one succeeds. Default: ascii. Other possible values include the standard Python encodings. |
| --fallback-encoding=ENC | If none of the encodings specified with --encoding succeed in decoding an author name or log message, then fall back to using ENC in lossy 'replace' mode. Use of this option may cause information to be lost, but at least it allows the conversion to run to completion. This option only affects the encoding of log messages and author names; there is no fallback encoding for filenames. (By using an --options file, it is possible to specify a fallback encoding for filenames.) Default: disabled. |
| --no-cross-branch-commits | Prevent the creation of SVN commits that affect multiple branches or trunk and a branch. Instead, break such changesets into multiple commits, one per branch. |
| --retain-conflicting-attic-files | If a file appears both inside an outside of the CVS attic, retain the attic version in an SVN subdirectory called `Attic'. (Normally this situation is treated as a fatal error.) |
| Symbol handling | |
| --symbol-transform=PAT:SUB | Transform RCS/CVS symbol names before entering them into Subversion. PAT is a Python regular expression pattern that is matched against the entire symbol name. If it matches, the symbol is replaced with SUB, which is a replacement pattern using Python's reference syntax. You may specify any number of these options; they will be applied in the order given on the command line. This option can be useful if you're converting a repository in which the developer used directory-wide symbol names like 1_0, 1_1 and 2_1 as a kludgy form of release tagging (the C-x v s command in Emacs VC mode encourages this practice). A command like cvs2svn --symbol-transform='([0-9])-(.*):release-\1.\2' -s SVN RCS will transform a local CVS repository into a local SVN repository, performing the following sort of mappings of RCS symbolic names to SVN tags: 1-0 → release-1.0 1-1 → release-1.1 2-0 → release-2.0 |
| --symbol-hints=PATH | Read symbol conversion hints from PATH. The format of PATH is the same as the format output by --write-symbol-info, namely a text file with four whitespace-separated columns: project-id symbol conversion svn-path parent-lod-name project-id is the numerical ID of the project to which the symbol belongs, counting from 0. project-id can be set to '.' if project-specificity is not needed. symbol-name is the name of the symbol being specified. conversion specifies how the symbol should be converted, and can be one of the values 'branch', 'tag', or 'exclude'. If conversion is '.', then this rule does not affect how the symbol is converted. svn-path is the name of the SVN path to which this line of development should be written. If svn-path is omitted or '.', then this rule does not affect the SVN path of this symbol. parent-lod-name is the name of the symbol from which this symbol should sprout, or '.trunk.' if the symbol should sprout from trunk. If parent-lod-name is omitted or '.', then this rule does not affect the preferred parent of this symbol. The file may contain blank lines or comment lines (lines whose first non-whitespace character is '#'). The simplest way to use this option is to run the conversion through CollateSymbolsPass with --write-symbol-info option, copy the symbol info and edit it to create a hints file, then re-start the conversion at CollateSymbolsPass with this option enabled. |
| --symbol-default=OPT | Specify how to convert ambiguous symbols (i.e., those that
appear in the CVS archive as both branches and tags).
OPT is one of the following:
|
| --force-branch=REGEXP | Force symbols whose names match REGEXP to be branches. |
| --force-tag=REGEXP | Force symbols whose names match REGEXP to be tags. This will cause an error if such a symbol has commits on it. |
| --exclude=REGEXP | Exclude branches and tags whose names match REGEXP from the conversion. |
| --keep-trivial-imports | Do not exclude branches that were only used for a single import. (By default such branches are excluded because they are usually created by the inappropriate use of cvs import.) |
| Subversion properties | |
| --username=NAME | Use NAME as the author for cvs2svn-synthesized commits (the default value is no author at all. |
| --auto-props=FILE |
Specify a file in the format of Subversion's config file, whose [auto-props] section can be used to set arbitrary properties on files in the Subversion repository based on their filenames. (The [auto-props] section header must be present; other sections of the config file, including the enable-auto-props setting, are ignored.) Filenames are matched to the filename patterns case-insensitively, consistent with Subversion's behavior. The auto-props file might have content like this: [auto-props] *.txt = svn:mime-type=text/plain;svn:eol-style=native *.doc = svn:mime-type=application/msword;!svn:eol-style Please note that cvs2svn allows properties to be explicitly unset: if cvs2svn sees a setting like !svn:eol-style (with a leading exclamation point), it forces the property to remain unset, even if later rules would otherwise set the property. |
| --mime-types=FILE | Specify an apache-style mime.types file for setting svn:mime-type properties on files in the Subversion repository. |
| --eol-from-mime-type | For files that don't have the kb expansion mode but have a known mime type, set the eol-style based on the mime type. For such files, set the svn:eol-style property to "native" if the mime type begins with "text/", and leave it unset (i.e., no EOL translation) otherwise. Files with unknown mime types are not affected by this option. This option has no effect unless the --mime-types option is also specified. |
| --default-eol=STYLE | Set svn:eol-style to STYLE for files that don't have the kb expansion mode and whose end-of-line translation mode hasn't been determined by one of the other options. STYLE can be "binary" (default), "native", "CRLF", "LF", or "CR". |
| --keywords-off | By default, cvs2svn sets svn:keywords on CVS files to "Author Date Id Revision" if the file's svn:eol-style property is set (see the --default-eol option). The --keywords-off switch prevents cvs2svn from setting svn:keywords for any file. (The result for files that do contain keyword strings is somewhat unexpected: the keywords will be left with the expansions that they had when committed to CVS, which is usually the expansion for the previous revision.) |
| --keep-cvsignore | Include .cvsignore files in the output. (Normally they are unneeded because cvs2svn sets the corresponding svn:ignore properties.) |
| --cvs-revnums | Record CVS revision numbers as file properties in the Subversion repository. (Note that unless it is removed explicitly, the last CVS revision number will remain associated with the file even after the file is changed within Subversion.) |
| Extraction options | |
| --use-internal-co | Use internal code to extract the contents of CVS revisions. This is the default extraction option. This is up to 50% faster than --use-rcs, but needs a lot of disk space: roughly the size of your CVS repository plus the peak size of a complete checkout of the repository with all branches that existed and still had commits pending at a given time. If this option is used, the $Log$ keyword is not handled. |
| --use-rcs | Use RCS's co command to extract the contents
of CVS revisions. RCS is much faster than CVS, but in certain
rare cases it has problems with data that CVS can handle.
Specifically:
|
| --use-cvs | If RCS co is having trouble extracting CVS revisions, you may need to pass this flag, which causes cvs2svn to use CVS instead of RCS to read the repository. See --use-rcs for more information. |
| Environment options | |
| --tmpdir=PATH | Use the directory PATH for all of cvs2svn's temporary data (which can be a lot of data). The default value is cvs2svn-tmp in the current working directory. |
| --svnadmin=PATH | If the svnadmin program is not in your $PATH you should specify its absolute path with this switch. svnadmin is needed when the -s/--svnrepos output option is used |
| --co=PATH | If the co program (a part of RCS) is not in your $PATH you should specify its absolute path with this switch. (co is needed if the --use-rcs extraction option is used.) |
| --cvs=PATH | If the cvs program is not in your $PATH you should specify its absolute path with this switch. (cvs is needed if the --use-cvs extraction option is used.) |
| Partial conversions | |
| -p PASS --pass PASS |
Execute only pass PASS of the conversion. PASS can be specified by name or by number (see --help-passes) |
| -p [START]:[END] --passes [START]:[END] |
Execute passes START through END of the conversion (inclusive). START and END can be specified by name or by number (see --help-passes). If START or END is missing, it defaults to the first or last pass, respectively. |
| Information options | |
| --version | Print the version number. |
| --help, -h | Print the usage message and exit with success. |
| --help-passes | Print the numbers and names of the conversion passes and exit with success. |
| --man | Write the manpage for this program to standard output. |
| --verbose, -v | Tell cvs2svn to print lots of information about what it's doing to STDOUT. This option can be specified twice to get debug-level output. |
| --quiet, -q | Tell cvs2svn to operate in quiet mode, printing little more than pass starts and stops to STDOUT. This option may be specified twice to suppress all non-error output. |
| --write-symbol-info=PATH | Write symbol statistics and information about how symbols were converted to PATH during CollateSymbolsPass. See --symbol-hints for a description of the output format. |
| --skip-cleanup | Prevent the deletion of the temporary files that cvs2svn creates in the process of conversion. |
| --profile | Dump Python cProfile profiling data to the file cvs2svn.cProfile. In Python 2.4 and earlier, if cProfile is not installed, it will instead dump Hotshot profiling data to the file cvs2svn.hotshot. |
To create a new Subversion repository by converting an existing CVS repository, run the script like this:
$ cvs2svn --svnrepos NEW_SVNREPOS CVSREPOS
To create a new Subversion repository containing only trunk commits, and omitting all branches and tags from the CVS repository, do
$ cvs2svn --trunk-only --svnrepos NEW_SVNREPOS CVSREPOS
To create a Subversion dumpfile (suitable for 'svnadmin load') from a CVS repository, run it like this:
$ cvs2svn --dumpfile DUMPFILE CVSREPOS
To use an options file to define all of the conversion parameters, specify --options:
$ cvs2svn --options OPTIONSFILE
As it works, cvs2svn will create many temporary files in a temporary directory called "cvs2svn-tmp" (or the directory specified with --tmpdir). This is normal. If the entire conversion is successful, however, those tempfiles will be automatically removed. If the conversion is not successful, or if you specify the '--skip-cleanup' option, cvs2svn will leave the temporary files behind for possible debugging.


[Do you love yourself?]
Yes
No
Are you sure?
Of course you do, you're the most beautiful human being I've seen.


Files | |
| file | pmlib_clkrate.h |
| PMLIB Clock Rate Manager API interface file. | |
| file | pmlib_clkrate_pmmc.h |
| PMLIB Clock Rate Manager API interface file. | |
| file | pmlib_videopll.h |
| This file declares the interface for video pll programming. | |
Macros | |
| #define | PMLIB_VIDEO_PLL_CALC_MIN_MN (0U) |
| Flag to indicate to the API to calculate the min M and min N values that can meet the desired frequency. | |
| #define | PMLIB_VIDEO_PLL_CALC_MAX_MN (1U) |
| Flag to indicate to the API to calculate the max M and max N values that can meet the desired frequency. Useful for errata i886. | |
Typedefs | |
| typedef enum pmlibVideoPllVenc | pmlibVideoPllVenc_t |
| Enum for the Venc's Caution: Do not change the enum values. these are exact match of Bsp_PlatformVenc. | |
| typedef enum pmlibVideoPllClkSrc | pmlibVideoPllClkSrc_t |
| Enum for the Venc's Clock Source Caution: Do not change the enum values. these are exact match of Bsp_PlatformClkSrc. | |
Enumerations | |
| enum | pmlibVideoPllVenc { PMLIB_VIDEOPLL_VENC_LCD1 = 0U, PMLIB_VIDEOPLL_VENC_LCD2, PMLIB_VIDEOPLL_VENC_LCD3, PMLIB_VIDEOPLL_VENC_HDMI, PMLIB_VIDEOPLL_VENC_MAX } |
| Enum for the Venc's Caution: Do not change the enum values. these are exact match of Bsp_PlatformVenc. More... | |
| enum | pmlibVideoPllClkSrc { PMLIB_VIDEOPLL_CLKSRC_PRCM_PER_PLL = 0, PMLIB_VIDEOPLL_CLKSRC_DPLL_VIDEO1_CLKOUT1, PMLIB_VIDEOPLL_CLKSRC_DPLL_VIDEO1_CLKOUT2, PMLIB_VIDEOPLL_CLKSRC_DPLL_VIDEO1_CLKOUT3, PMLIB_VIDEOPLL_CLKSRC_DPLL_VIDEO1_CLKOUT4, PMLIB_VIDEOPLL_CLKSRC_DPLL_VIDEO2_CLKOUT1, PMLIB_VIDEOPLL_CLKSRC_DPLL_VIDEO2_CLKOUT2, PMLIB_VIDEOPLL_CLKSRC_DPLL_VIDEO2_CLKOUT3, PMLIB_VIDEOPLL_CLKSRC_DPLL_VIDEO2_CLKOUT4, PMLIB_VIDEOPLL_CLKSRC_DPLL_HDMI, PMLIB_VIDEOPLL_CLKSRC_DPLL_ABE_GICLK, PMLIB_VIDEOPLL_CLKSRC_DSS_GFCLK, PMLIB_VIDEOPLL_CLKSRC_DPLL_EVE_VID_DSP, PMLIB_VIDEOPLL_CLKSRC_MAX } |
| Enum for the Venc's Clock Source Caution: Do not change the enum values. these are exact match of Bsp_PlatformClkSrc. More... | |
Functions | |
| pmErrCode_t | PMLIBClkRateInit (uint32_t *rootClkFreqList, pmlibBoardVdRailShare_t *vdRailShareList) |
| Function to set-up power related platform information for the given device which are the as follows : More... | |
| pmErrCode_t | PMLIBClkRateSet (pmhalPrcmModuleId_t modId, pmhalPrcmClockId_t clkId, uint32_t clkRate) |
| Set the clock rate of the given module. More... | |
| pmErrCode_t | PMLIBClkRateGet (pmhalPrcmModuleId_t modId, pmhalPrcmClockId_t clkId, uint32_t *clkRate) |
| Get the current clock rate of the given module. More... | |
| pmErrCode_t | PMLIBClkRateSet (pmhalPmmcModuleId_t modId, pmhalPmmcClockId_t clkId, uint32_t clkRate) |
| Set the clock rate of the given module. More... | |
| pmErrCode_t | PMLIBClkRateGet (pmhalPmmcModuleId_t modId, pmhalPmmcClockId_t clkId, uint32_t *clkRate) |
| Get the current clock rate of the given module. More... | |
| int32_t | PMLIBVideopllSetFreq (pmhalPrcmNodeId_t videopllId, uint32_t freq, uint32_t maxOrMinMN, uint32_t timeOut) |
| Api to set the VideoPll to given frequency . More... | |
Initialization of the device involves setting the right frequency for the clocks for the CPUs and peripherals and right voltage for the voltage rails.
The initialization of the system is carried in 3 stages:
The Clock Rate Configuration provides 2 APIs to set and get the frequency of any clock of any given module.
Initialization of the device involves setting the right frequency for the clocks for the CPUs and peripherals and right voltage for the voltage rails via the PMMC
The initialization of the system is carried in 2 stages:
The Clock Rate Configuration provides 2 APIs to set and get the frequency of any clock of any given module.
VideoPll Configuration - Video-PLL library provides APIs configure the Video PLL to the required frequency for display application.
| enum pmlibVideoPllClkSrc |
Enum for the Venc's Clock Source Caution: Do not change the enum values. these are exact match of Bsp_PlatformClkSrc.
| enum pmlibVideoPllVenc |
Enum for the Venc's Caution: Do not change the enum values. these are exact match of Bsp_PlatformVenc.
| pmErrCode_t PMLIBClkRateGet | ( | pmhalPmmcModuleId_t | modId, |
| pmhalPmmcClockId_t | clkId, | ||
| uint32_t * | clkRate | ||
| ) |
Get the current clock rate of the given module.
The API requests the module's clock frequency by sending the clock get message to the PMMC.
| modId | Module ID Refer Enum #pmhalPmmcModuleId_t for values. |
| clkId | Clock Id present in the module Refer Enum #pmhalPmmcClockId_t for values. |
| clkRate | New clock rate in Hz returned for the clockID |
| errorStatus | Status of API call. Can be any of the following,
|
| pmErrCode_t PMLIBClkRateGet | ( | pmhalPrcmModuleId_t | modId, |
| pmhalPrcmClockId_t | clkId, | ||
| uint32_t * | clkRate | ||
| ) |
Get the current clock rate of the given module.
The API traverses through the clock tree data structure to determine the clock frequency of a given module clock at run time for debug or application feedback to know the clock frequency of timers and other peripherals to convert ticks to seconds.
| modId | Module ID Refer Enum pmhalPrcmModuleId_t for values. |
| clkId | Clock Id present in the module Refer Enum pmhalPrcmClockId_t for values. |
| clkRate | New clock rate in Hz returned for the clockID |
| errorStatus | Status of API call. Can be any of the following,
|
| pmErrCode_t PMLIBClkRateInit | ( | uint32_t * | rootClkFreqList, |
| pmlibBoardVdRailShare_t * | vdRailShareList | ||
| ) |
Function to set-up power related platform information for the given device which are the as follows :
| rootClkFreqList | Array having root clock frequencies (in Hertz) |
| vdRailShareList | Array having voltage rail sharing information between Voltage domains |
| errorStatus | Status of API call. Can be any of the following,
|
| pmErrCode_t PMLIBClkRateSet | ( | pmhalPmmcModuleId_t | modId, |
| pmhalPmmcClockId_t | clkId, | ||
| uint32_t | clkRate | ||
| ) |
Set the clock rate of the given module.
The API configures the module clock by sending a clock set message to the PMMC.
| modId | Module ID Refer Enum #pmhalPmmcModuleId_t for values. |
| clkId | Clock Id present in the module Refer Enum #pmhalPmmcClockId_t for values. |
| clkRate | New clock rate in Hz to be provided for the clockID |
| errorStatus | Status of API call. Can be any of the following,
|
| pmErrCode_t PMLIBClkRateSet | ( | pmhalPrcmModuleId_t | modId, |
| pmhalPrcmClockId_t | clkId, | ||
| uint32_t | clkRate | ||
| ) |
Set the clock rate of the given module.
The API configures the necessary DPLL, Mux and divider registers for a given input frequency. The API uses an internal database to find the necessary device configuration for a given frequency. The list of supported frequencies for a given clock of a given module can be seen in the files pm\pmlib\tda2xx\pmlib_clk_rate_supported_freq_tda2xx.txt. The API makes sure when the frequency of a CPU is changed such that the OPP shifts, the PMIC is also programmed to change the voltage to correspond to this OPP shift.
| modId | Module ID Refer Enum pmhalPrcmModuleId_t for values. |
| clkId | Clock Id present in the module Refer Enum pmhalPrcmClockId_t for values. |
| clkRate | New clock rate in Hz to be provided for the clockID |
| errorStatus | Status of API call. Can be any of the following,
|
| int32_t PMLIBVideopllSetFreq | ( | pmhalPrcmNodeId_t | videopllId, |
| uint32_t | freq, | ||
| uint32_t | maxOrMinMN, | ||
| uint32_t | timeOut | ||
| ) |
Api to set the VideoPll to given frequency .
| videopllId | Unique ID of the PLL |
| freq | Frequency at which video pll needs to be configured. This number should be represented in kHz. |
| maxOrMinMN | This parameter allows the API to calculate the maximum value of M and N for the given frequency or minimum value of M and N for the given frequency. PMLIB_VIDEO_PLL_CALC_MIN_MN - Minimum value of M, N. PMLIB_VIDEO_PLL_CALC_MAX_MN - Maximum value of M, N. |
| timeOut | Wait time duration. PM_TIMEOUT_NOWAIT - If one does not want to wait PM_TIMEOUT_INFINITE - If one wants to wait infinitely till the Frequency is set. Any other Number - To specify the number of cycles. |


Finds errors and common issues within a JSON Table Type Pattern v1 validated against OpenFlow 1.3. This includes detecting incorrectly named OXM match fields, missing identifiers, incorrect values, invalid actions etc. This TTP validator is an offshoot of my efforts to parse and process Table Type Patterns as part of my PhD, and detects issues I've seen. This might not catch everything and is a best effort.
For best results use UTF-8 encoding. Upload size is limited to 1MB.
If you encounter any problems or bugs with the validator please let me know.
Or if you wish to discuss my research further, or have TTP patterns I could use.
Author: Richard Sanger
Email<EMAIL_ADDRESS>This validator is a portion of my ongoing PhD, which I've released to assist the community in creating TTPs.
I'm researching how to algorithmically transform a set of OpenFlow flow rules from one hardware pipeline to another (i.e. from one TTP to another). Given an OpenFlow flow rule set installed on a switch by an application I'm attempting to fit these flow rules to a new OpenFlow switch with a different pipeline. I'm using TTPs to describe the hardware pipeline and I'm programatically extracting information from them. Currently my research scope is focused an offline method which works with a flow rule set at a single point in time.
I'm interested in obtaining more TTPs to test my research with, please get in touch if you have any or wish to discuss my research further.


Latest Employers
Yeap Network, NYC
Chief Technology Office (CTO)
2015 - Present
TCS/JPMC
Senior Software Engineer Lead
2014 - 2015
Bernstein Medical - NYC
Director IT and Webmaster
2013 - 2014
Peter DHaiti is a Senior Web Developer from New York who has years of experience in the field with expertise in HTML5, CSS3, Bootstrap, jQuery, AngularJs, Polymer, PHP5, MySQL, SEO and more.
He received his degree in computer programming with honors in 2004 from Katharine Gibbs School in NYC, after getting his A+ Advance Certificate for Computer Repair & Troubleshooting from South Shore School, Brooklyn, NY in 2002.
Over the years he has worked with various institutions from medical facilities like Brookdale University Hospital and Medical Center to specialized companies such as Tata Consultancy Services (TCS) where he was working as lead developer.
He started first as a administrative assistant in 2002 he has juggled through the field up to the point where after building enough managing experience he became a leading Web Developer and CTO in the field.
0 points have been earned
Chief Technology Office (CTO)
2015 - Present
Senior Software Engineer Lead
2014 - 2015
Director IT and Webmaster
2013 - 2014
I like to hear from my clients!
Client? Drop a note.
New York City, US
P:<PHONE_NUMBER>
I use the latest technologies like html5, css3, sass, Bootstrap, jQuery, angularJS, ajax, Json and JavaScript to get my clients up to date


14 October 1996
Disease Outbreak Reported
WHO has been informed of an outbreak of Ebola haemorrhagic fever in Boué, 200 km west of Makokou where an outbreak caused 37 cases in February-March this year. A team from WHO is on site assisting the national health authorities in investigating and controlling the outbreak.


Author
Display {{newQuote.author}}
Author is Required
Quote
Display {{newQuote.quote}}
Quote is Required
Date:
submitted By Date is Required
Add Quote


| Class | MySpace::MySpaceAPI |
| In: |
myspace/myspaceapi.rb
|
| Parent: | Object |
The MySpaceAPI object provides access to the MySpace REST API. use this class to access all the functions
| access_token | [RW] | |
| consumer | [R] | |
| http_logger | [RW] | |
| request_token | [RW] |
Save the application key/secret(s) and initialize OAuth code.
If optional param +:application_type+ is passed, it must be one of +MySpace::MySpaceContext::APPLICATION_TYPE_ONSITE+ or +MySpace::MySpaceContext::APPLICATION_TYPE_OFFSITE+. If the application is an onsite application, an access token is not required, since the user must separately give your application permission to access their data. If the application is an offsite application, it must get an access token from the user to access their data.
If optional param +:request_token+ is passed +:request_token_secret+ must also be passed, and they will be used to create the default argument to +MySpace#get_access_token+ below. If optional param +:access_token+ is passed, +:access_token_secret+ must also be passed, and they will be used to create the access token for the REST API calls.
If optional param +:site+ is passed, it must be either +:prod+ or +:stage+, and MySpace OAuth calls will be directed to either the production or stage API server accordingly.
OpenSocial v0.9 - Add a single key to AppData for a single user
Resource: http://opensocial.myspace.com/roa/09/appData/@me/@self/ Description: Add a single key AppData for a single user Parameter: @person_id (mandatory parameter) current person id e.g: @me @app_id (mandatory parameter) refers to applicaiton id for which user wants to enter data @key (mandatory parameter).refers to the name of key which will be entered @value (mandatory parameter).refers to the value of key which will be stored Details: http://wiki.developer.myspace.com/index.php?title=OpenSocial_v0.9_AppData
OpenSocial v0.9 - Add Photo How to use this Method Make sure you have image file (Say home_16.jpg) available in same folder where your source resides
img= open(‘D:\Projects\myspace\rubyFinalSVN\samples\rails\sample\app\controllers\home_16.jpg’, "rb") {|io| io.read }
@uploadimage =myspace.add_photo(@user_id, 'caption', '1198371', img) Details: http://wiki.developer.myspace.com/index.php?title=OpenSocial_0.9_MediaItems
OpenSocial v0.9 Add StatusMoodComments
Resource: #http://opensocial.myspace.com/roa/09/statusmoodcomments/{personId}/@self?statusId={statusId} Description: Set Status mood comments for a particular person Parameters: @person_id (mandatory parameter) current person id e.g: @me @body (mandatory parameter) body of status comment @statusid(mandatory paramter) id of parameter for which comment is posted Details: http://wiki.developer.myspace.com/index.php?title=OpenSocial_v0.9_StatusMoodComments
Real Time Stream
Resource: http://api.myspace.com/stream/subscription? Description: Add Subscription Subscription Usage : addSubscriptionV9('All','http://myspace.mycompany.com/handler.ashx','{}','',1,1); Details: http://wiki.developer.myspace.com/index.php?title=Category:Real_Time_Stream
OpenSocial v0.9 - Add Video
How to use this Method Make sure you have video file (Say softboy.avi) available in same folder where your source resides vdo= open('D:\Projects\myspace\rubyFinalSVN\samples\rails\sample\app\controllers\softboy.avi', "rb") {|io| io.read } @uploadVideo = myspace.add_video(@user_id, '@video', 'caption', 'description', 'tags', 'en-US', vdo, '13','video/x-msvideo') Details: http://wiki.developer.myspace.com/index.php?title=OpenSocial_0.9_MediaItems
Create an activity { "externalId":"myExternalId", "id":"myspace.com.activity.-1", "title":"osapi test activity at", "body":"osapi test activity body", "templateParams":{ "msParameters":[ { "key":"friend", "value":"6221" }, { "key":"content", "value":"hello there this is my template param content" }] }, "titleId":"Template_4"
}
OpenSocial v0.9 - Add Album
Resource: http://opensocial.myspace.com/roa/09/albums/@me/@self Parameters: @person_id (mandatory parameter) current person id e.g: @me @caption (mandatory parameter)use in place of title. @location (optional parameter) @privacy (optional parameter) specifies visibility for album, it can be one of 'Everyone', 'FriendsOnly' or 'Me' Description: Creates new album with specified access or with default access of EveryOne (if not specified) Details: http://wiki.developer.myspace.com/index.php?title=OpenSocial_v0.9_Albums
Real Time Stream
Resource: http://api.myspace.com/stream/subscription/{all}? Description:Delete all Subscription Details: http://wiki.developer.myspace.com/index.php?title=Category:Real_Time_Stream
OpenSocial v0.9 - Delete single key to AppData for a single user
Resource: http://opensocial.myspace.com/roa/09/appData/@me/@self/ Description: Delete a single key AppData for a single user Parameter: @person_id (mandatory parameter) current person id e.g: @me @app_id (mandatory parameter) refers to applicaiton id for which user wants to delete data @fields (mandatory parameter).refers to the name of key which will be updated @value (mandatory parameter).refers to the value of key which will be updated Details: http://wiki.developer.myspace.com/index.php?title=OpenSocial_v0.9_AppData
Real Time Stream
Resource: http://api.myspace.com/stream/subscription/{subscriptionId}? Description: Delete Subscription Parameter: subcription_id (mandatory) id of subscrption which user want to delete Details: http://wiki.developer.myspace.com/index.php?title=Category:Real_Time_Stream
OpenSocial v0.9 - Retrieve all activity supported Fields
Resource: http://opensocial.myspace.com/roa/09/activities/@supportedFields Description: Retrieve all activity supported fields Details: http://wiki.developer.myspace.com/index.php?title=OpenSocial_0.9_MediaItems
OpenSocial v0.9 - Retrieve all supported Object Types
Resource: http://opensocial.myspace.com/roa/09/activities/@supportedObjectTypes Description: Retrieve all activity supported Object Types Details: http://wiki.developer.myspace.com/index.php?title=OpenSocial_0.9_MediaItems
OpenSocial v0.9 - Retrieve all supported verbs
Resource: http://opensocial.myspace.com/roa/09/activities/@supportedVerbs Description: Retrieve all activity supported verbs Details: http://wiki.developer.myspace.com/index.php?title=OpenSocial_0.9_MediaItems
OpenSocial v0.9 -Retrieve viewer activities
Resource: http://opensocial.myspace.com/roa/09/activities/{personId}/{selector} Description: Return all activities available for viewer Parameter: @person_id (mandatory parameter) current person id e.g: @me @fields (optional parameter).------------------------------ Details: http://wiki.developer.myspace.com/index.php?title=OpenSocial_v0.9_Activities
OpenSocial v0.9 - Retrieve viewer activities by appID
Resource: http://opensocial.myspace.com/roa/09/activities/{personId}/{selector} Description: Return all activities available for viewer for an appID specified in parameter Parameter: @app_id (mandatory parameter) refers to applicaiton id for which user wants to check activities @fields (optional parameter).------------------------------ Details: http://wiki.developer.myspace.com/index.php?title=OpenSocial_v0.9_Activities
OpenSocial v0.9 - Retrieve Album by ID
Resource: http://opensocial.myspace.com/roa/09/albums/@me/@self/%s Details: http://wiki.developer.myspace.com/index.php?title=OpenSocial_v0.9_Albums Parameters: @person_id (mandatory parameter) current person id e.g: @me @album_id (mandatory parameter)pass the album id which you want to get in response. @fields (optional) return fields which you need in response Description: get_albumbyidv9 return a specific album based on passed alumb_id
OpenSocial v0.9 - Retrieve all Album supported Fields
Resource: http://opensocial.myspace.com/roa/09/albums/@supportedFields Description: Return all fields available for albums Details: http://wiki.developer.myspace.com/index.php?title=OpenSocial_v0.9_Albums
OpenSocial v0.9 - Retrieve Albums
Resource: http://opensocial.myspace.com/roa/09/albums/@me/@self/%s Description: Retrieve Albums return all albums available for user, Parameters: @person_id (mandatory parameter) current person id e.g: @me @fields (optional parameter) fields which you want to filter in response @startindex (optional parameter) startIndex must be in the form of startIndex = (count * i) + 1, where i is any non-negative integer, e.g. if count = 5, startIndex can be 1, 6, 11, 16, etc. @count (optional parameter) total number of records Details: http://wiki.developer.myspace.com/index.php?title=OpenSocial_v0.9_Albums
Real Time Stream
Resource: http://api.myspace.com/stream/subscription/{subscriptionId}? Description:Get all Subscption Details: http://wiki.developer.myspace.com/index.php?title=Category:Real_Time_Stream
OpenSocial v0.9 - Retrieve all/Single key in AppData for a single user
Resource: http://opensocial.myspace.com/roa/09/appdata/{personId}/{selector}/{appId} Description: Retrieve all AppData for a single user Parameter: @person_id (mandatory parameter) current person id e.g: @me @app_id (mandatory parameter) refers to applicaiton id for which user wants to get data @fields (optional parameter).The fields correspond to keys in the AppData. One uses fields to only retrieve specific keys. If the request omits fields, all AppData per user will be returned. Details: http://wiki.developer.myspace.com/index.php?title=OpenSocial_v0.9_AppData
Gets the global application data. This can be anything the application wants. If you pass keys, only return data corresponding to the passed keys.
OpenSocial v0.9 - Retrieve friend activities.
Resource: http://opensocial.myspace.com/roa/09/activities/{personId}/{selector} Description: Return all activities available for friend. Parameter: @person_id (mandatory parameter) current person id e.g: @me @fields (optional parameter).specific fields Details: http://wiki.developer.myspace.com/index.php?title=OpenSocial_v0.9_Activities
OpenSocial v0.9 - Retrieve friend activities by appID
Resource: http://opensocial.myspace.com/roa/09/activities/{personId}/{selector} Description: Return all activities available for friend for an appID specified in parameter Parameter: @person_id (mandatory parameter) current person id e.g: @me @app_id (mandatory parameter) refers to applicaiton id for which user wants to check activities @fields (optional parameter).specific fields Details: http://wiki.developer.myspace.com/index.php?title=OpenSocial_v0.9_Activities
OpenSocial v0.9 People- get my friends Data
Resource: http://opensocial.myspace.com/roa/09/people/{personId}/{selector}/{friendId} Description: get my friends Data Parameters: @person_id (mandatory parameter) current person id e.g: @me @fields (optional parameter) @filterby (optional parameter) some valid values : {topFriends | toponlineFriends | hasApp etc } @filterop (optional parameter) some valid values : {contains | equals etc } @filtervalue(optional parameter) some valid values : {true | false | specific value etc } @format (optional parameter) Determines the format of the response. We currently support json and xml @startindex (optional parameter) startIndex must be in the form of startIndex = (count * i) + 1, where i is any non-negative integer, e.g. if count = 5, startIndex can be 1, 6, 11, 16, etc. @count (optional parameter) total number of records Details: http://wiki.developer.myspace.com/index.php?title=OpenSocial_v0.9_People
The function will get all of the activites of a user friend, provided that the current user and application have privilages to access it
@param int|string $userId @param unknown_type $culture @param mixed $datetime A better limit on the activities returned is datetime because it allows the consumer to query deltas and only processed what has changed. Pass a date that is less than 60 days ago as the maximum and default number of days back you can query is 60. If you query more than that the system will only go as far back as 60. Example of querystring parameters is: datetime=06/21/2009 @param string $activityTypes PhotoTagged|PhotoAdd|SongUpload|ProfileSongAdd|BlogAdd|ForumPosted|ForumTopicReply|VideoAdd|ProfileVideoUpdate|FavoriteVideoAdd|FriendAdd|JoinedGroup|FriendCategoryAdd|PersonalBandShowUpdate|EventPosting|EventAttending|ApplicationAdd @param int $pageSize You can use this parameter to specify the number of atom entries returned in the stream @param bool $composite Set this parameter to true t @param bool $composite Set this parameter to true to get one atom entry for all activities of the same type on the same day. If the objects of the activities go into targets then they will be grouped by target. Ex: Max uploaded 5 photos into the album Medieval Times. @param bool $extensions Pipe delimited list of options syndicating the activity stream. Name fo the query string parameter is "extensions" Example: &extensions=actor|subject @return SimpleXML a SimpleXML representation of an Activities ATOM Feed
OpenSocial v0.9 Retrieve a status & mood for all Friends
Resource: http://opensocial.myspace.com/roa/09/statusmood/{personId}/{selector} Description: Retrieve a status & mood for all Friends Parameters: @person_id (mandatory parameter) current person id e.g: @me @filterby (optional parameter) some valid values : {topFriends | toponlineFriends | hasApp etc } @filterop (optional parameter) some valid values : {contains | equals etc } @filtervalue (optional parameter) some valid values : {true | false | specific value etc } @includeself (optional parameter) current user should included or not @culture (optional parameter) culture for which you wan to select value @fields (optional parameter) specific fields Details: http://wiki.developer.myspace.com/index.php?title=OpenSocial_v0.9_StatusMood
OpenSocial v0.9 Retrieve a status & mood history for a particular friend
Resource: http://opensocial.myspace.com/roa/09/statusmood/{personId}/{selector}/history Description: Retrieve a status & mood for a friend Parameters: @person_id (mandatory parameter) current person id e.g: @me @friend_id (mandatory parameter) id of friend for which you want to retreive data @filterby (optional parameter) some valid values : {topFriends | toponlineFriends | hasApp etc } @filterop (optional parameter) some valid values : {contains | equals etc } @filtervalue (optional parameter) some valid values : {true | false | specific value etc } @includeself (optional parameter) current user should included or not @culture (optional parameter) culture for which you wan to select value @fields (optional parameter) specific fields Details: http://wiki.developer.myspace.com/index.php?title=OpenSocial_v0.9_StatusMood
OpenSocial v0.9 Retrieve a status & mood history for friends
Resource: http://opensocial.myspace.com/roa/09/statusmood/{personId}/{selector}/history Description: Retrieve a status & mood history for friends Parameters: @person_id (mandatory parameter) current person id e.g: @me @filterby (optional parameter) some valid values : {topFriends | toponlineFriends | hasApp etc } @filterop (optional parameter) some valid values : {contains | equals etc } @filtervalue (optional parameter) some valid values : {true | false | specific value etc } @includeself (optional parameter) current user should included or not @culture (optional parameter) culture for which you wan to select value @fields (optional parameter) specific fields Details: http://wiki.developer.myspace.com/index.php?title=OpenSocial_v0.9_StatusMood
OpenSocial v0.9 Retrieve a status & mood history for a particular friend
Resource: http://opensocial.myspace.com/roa/09/statusmood/{personId}/{selector}/history Description: Retrieve a status & mood for a friend Parameters: @person_id (mandatory parameter) current person id e.g: @me @friend_id (mandatory parameter) id of friend for which you want to retreive data @filterby (optional parameter) some valid values : {topFriends | toponlineFriends | hasApp etc } @filterop (optional parameter) some valid values : {contains | equals etc } @filtervalue (optional parameter) some valid values : {true | false | specific value etc } @includeself (optional parameter) current user should included or not @culture (optional parameter) culture for which you wan to select value @fields (optional parameter) specific fields Details: http://wiki.developer.myspace.com/index.php?title=OpenSocial_v0.9_StatusMood
Tests whether user user_id is friends with one or more other users:
{"friendship"=> [{"areFriends"=>true, "friendId"=>6221}, {"areFriends"=>false, "friendId"=>12341234}, {"areFriends"=>true, "friendId"=>456073223}], "user"=> {"name"=>"Bob", "uri"=>"http://api.myspace.com/v1/users/456073223", "webUri"=>"http://www.myspace.com/bobvontestacount", "largeImage"=> "http://c1.ac-images.myspacecdn.com/images02/45/l_f820313641924f0f90004932c8bc310c.jpg", "userType"=>"RegularUser", "userId"=>456073223, "image"=> "http://c1.ac-images.myspacecdn.com/images02/45/s_f820313641924f0f90004932c8bc310c.jpg"}}
OpenSocial v0.9 Groups- Retrieve all supported fields
Resource: http://opensocial.myspace.com/roa/09/groups/@supportedFields Description: Retrieve all group supported fields Details: http://wiki.developer.myspace.com/index.php?title=OpenSocial_v0.9_Groups
OpenSocial v0.9 - Retrieve all groups for current user
Resource: http://opensocial.myspace.com/roa/09/groups/@me Description: Retrieve all groups for current user fields Parameter: @person_id (mandatory parameter) current person id e.g: @me @startindex (optional parameter) startIndex must be in the form of startIndex = (count * i) + 1, where i is any non-negative integer, e.g. if count = 5, startIndex can be 1, 6, 11, 16, etc. @count (optional parameter) total number of records Details: http://wiki.developer.myspace.com/index.php?title=OpenSocial_v0.9_Groups
OpenSocial v0.9 - Retrieve all media item supported Fields
Resource: http://opensocial.myspace.com/roa/09/mediaItems/@supportedFields Description: get the supported mediaitem fields Details: http://wiki.developer.myspace.com/index.php?title=OpenSocial_0.9_MediaItems
OpenSocial v0.9 - Get Media Items
Resource: http://opensocial.myspace.com/roa/09/mediaItems/{personId}/{selector}/{albumId}/{mediaItemId} Description: Retrieve items from an Album based on album_id Parameters: @person_id (mandatory parameter) current person id e.g: @me @album_id (mandatory parameter)Id of album for which you want to get data @startindex (optional parameter) startIndex must be in the form of startIndex = (count * i) + 1, where i is any non-negative integer, e.g. if count = 5, startIndex can be 1, 6, 11, 16, etc. @count (optional parameter) total number of records Details: http://wiki.developer.myspace.com/index.php?title=OpenSocial_0.9_MediaItems
OpenSocial v0.9 - Get Media Items by ID
Resource: http://opensocial.myspace.com/roa/09/mediaItems/{personId}/{selector}/{albumId}/{mediaItemId} Description: Retrieve a single MediaItem from an Album based on album_id and media_id Parameters: @person_id (mandatory parameter) current person id e.g: @me @album_id (mandatory parameter)Id of album for which you want to get data @media_id (mandatory parameter)Id of media items for which you want to get data @startindex (optional parameter) startIndex must be in the form of startIndex = (count * i) + 1, where i is any non-negative integer, e.g. if count = 5, startIndex can be 1, 6, 11, 16, etc. @count (optional parameter) total number of records Details: http://wiki.developer.myspace.com/index.php?title=OpenSocial_0.9_MediaItems
OpenSocial v0.9 MediaItemComments
Resource: http://opensocial.myspace.com/roa/09/mediaitemcomments/{personId}/@self/{albumId}/{mediaItemId} Description: Get comments associated with media item, based on album_id and media_id Parameters: @person_id (mandatory parameter) current person id e.g: @me @album_id (mandatory parameter)Id of album which you want to update @media_id (mandatory parameter)Id of media items for which you want to get data Details: http://wiki.developer.myspace.com/index.php?title=OpenSocial_v0.9_MediaItemComments
OpenSocial v0.9 StatusMood - Retrieve all supported moods
Resource: http://opensocial.myspace.com/roa/09/statusmood/@me/@supportedMood Description: Retrieve all supported moods Parameters: person_id (mandatory parameter) current person id e.g: @me Details: http://wiki.developer.myspace.com/index.php?title=OpenSocial_v0.9_StatusMood
OpenSocial v0.9 People- get a perticular friend Data
Resource: http://opensocial.myspace.com/roa/09/people/{personId}/{selector}/{friendId} Description: get a perticular friend Data Parameters: @person_id (mandatory parameter) current person id e.g: @me @fields (optional parameter) specific fields @filterby (optional parameter) some valid values : {topFriends | toponlineFriends | hasApp etc } @filterop (optional parameter) some valid values : {contains | equals etc } @filtervalue(optional parameter) some valid values : {true | false | specific value etc } @format (optional parameter) Determines the format of the response. We currently support json and xml @startindex (optional parameter) startIndex must be in the form of startIndex = (count * i) + 1, where i is any non-negative integer, e.g. if count = 5, startIndex can be 1, 6, 11, 16, etc. @count (optional parameter) total number of records Details: http://wiki.developer.myspace.com/index.php?title=OpenSocial_v0.9_People
OpenSocial v0.9 People- Retrieve all supported fields
Resource: http://opensocial.myspace.com/roa/09/people/@supportedFields Description: Retrieve all people supported fields Details: http://wiki.developer.myspace.com/index.php?title=OpenSocial_v0.9_People
OpenSocial v0.9 People- Get my profile data
Resource: http://opensocial.myspace.com/roa/09/people/@me/@self Description: Get my profile data Parameters: @person_id (mandatory parameter) current person id e.g: @me @fields (optional parameter) specific fields @filterby (optional parameter) some valid values : {topFriends | toponlineFriends | hasApp etc } @filterop (optional parameter) some valid values : {contains | equals etc } @filtervalue(optional parameter) some valid values : {true | false | specific value etc } @format (optional parameter) Determines the format of the response. We currently support json and xml @startindex (optional parameter) startIndex must be in the form of startIndex = (count * i) + 1, where i is any non-negative integer, e.g. if count = 5, startIndex can be 1, 6, 11, 16, etc. @count (optional parameter) total number of records Details: http://wiki.developer.myspace.com/index.php?title=OpenSocial_v0.9_People
OpenSocial v0.9 - Get Profile Comments
Resource: http://opensocial.myspace.com/roa/09/profilecomments/@me/@self Description: Return all comments available for user profile. Parameter: @person_id (mandatory parameter) current person id @fields (optional parameter). By default, the id of the comment author will be added to the result set, give the fields=author to get more information on the author Details: http://wiki.developer.myspace.com/index.php?title=OpenSocial_v0.9_ProfileComments
OpenSocial v0.9 Retrieve a status & mood history for user
Resource: http://opensocial.myspace.com/roa/09/statusmood/{personId}/{selector}/history Description: Retrieve a status & mood history for user Parameters: @person_id (mandatory parameter) current person id e.g: @me @fields (optional parameter) specific fields Details: http://wiki.developer.myspace.com/index.php?title=OpenSocial_v0.9_StatusMood
OpenSocial v0.9 Retrieve a status & mood for user
Resource: http://opensocial.myspace.com/roa/09/statusmood/{personId}/{selector} Description: Retrieve a status & mood for user Parameters: @person_id (mandatory parameter) current person id e.g: @me Details: http://wiki.developer.myspace.com/index.php?title=OpenSocial_v0.9_StatusMood
OpenSocial v0.9 Get StatusMoodComments
Resource: http://opensocial.myspace.com/roa/09/statusmoodcomments/{personId}/@self Description: Get all Status mood comments Parameters: @person_id (mandatory parameter) current person id e.g: @me @statusid id of moodstatus for which comment is posted Details: http://wiki.developer.myspace.com/index.php?title=OpenSocial_v0.9_StatusMoodComments
Real Time Stream
Resource: http://api.myspace.com/stream/subscription/{subscriptionId}?  Details: http://wiki.developer.myspace.com/index.php?title=Open_Search Description: Get Image Search @param mixed $searchTerms (mandatory parameter)search keywords @param integer $startIndex Indicates the index of the first item to retrieve from the query set @param integer $count total number of records @param string $searchBy which field the search should go through. Default is all the fields (yomi is only available to ja-jp culture) [ex. searchBy=name or searchBy=displayname or searchBy=email or searchBy=yomi] @param string $culture the culture context of the search; for instance japan is ja-jp; default is en-us [ex. culture=en-us] @param string $sortBy Ways to sort the images; when excluded sortBy is all [ex. sortBy=popular or sortBy=recent] @param string $sortOrder Order of the image sorting which can be descending (default) or ascending [ex. sortOrder=asc] @return object of python object representing the JSON in which the list of search
Open Search
Resource: http://api.myspace.com/opensearch/people? Details: http://wiki.developer.myspace.com/index.php?title=Open_Search Description: Get People Search @param mixed $searchTerms (mandatory parameter)search keywords @param integer $startIndex Indicates the index of the first item to retrieve from the query set @param integer $count total number of records @param string $searchBy which field the search should go through. Default is all the fields (yomi is only available to ja-jp culture) [ex. searchBy=name or searchBy=displayname or searchBy=email or searchBy=yomi] @param string $gender the gender to filter on; default is no preference or both [ex. gender=m or gender=f] @param bool $hasPhoto filter for those who only has photo; default is either [ex. hasPhoto=on] @param integer $minAge minimum age to start the search (same filter as site search) [ex. minAge=18] @param integer $maxAge maximum age to end the search with (same filter as site search) [ex. maxAge=68] @param string $location the location field such as city state and country to search for [ex. location=US] @param integer $distance distance away from location to return results; default is miles; depending on culture passed in it can be kilometers [ex. distance=25] @param mixed $latitude geo latitude to search; combination with longitude required when used [ex. latitude=1] (does not work with location field) @param mixed $longitude geo longtitude to search; combination with latitude is required when used [ex. longitude=1] (does not work with location field) @param string $culture the culture context of the search; for instance japan is ja-jp; default is en-us [ex. culture=en-us] @param string $countryCode countryCode to search with [ex. countryCode=CA] (this is similar to culture=en-CA) @return object of python object representing the JSON in which the list of search
Open Search
Resource: http://api.myspace.com/opensearch/video? Details: http://wiki.developer.myspace.com/index.php?title=Open_Search Description: Get Video Search @param mixed $searchTerms (mandatory parameter)search keywords @param integer $startIndex Indicates the index of the first item to retrieve from the query set @param integer $count total number of records @param string $searchBy which field the search should go through. Default is all the fields (yomi is only available to ja-jp culture) [ex. searchBy=name or searchBy=displayname or searchBy=email or searchBy=yomi] @param string $culture the culture context of the search; for instance japan is ja-jp; default is en-us [ex. culture=en-us] @param string $tag Determine if this is a tag search [ex. tag=1] @param string $videomode Determine if this is a tag search [ex. videoMode=1 (music videos) or videoMode=2 (official)] @return object of python object representing the JSON in which the list of search
OpenSocial v0.9 Notifications
send_notification Usage: ms = MySpace(ckeynsecret.CONSUMER_KEY, ckeynsecret.CONSUMER_SECRET) templateparam ='[{"key":"content","value":"Test notification content from python sdk"}, # {"key":"button0_surface","value":"canvas"}, # {"key":"button0_label","value":"Go To App Canvas"}, # {"key":"button1_label","value":"Go To App Profile"}]' notification_data = ms.send_notification(person_id="333220680", recipientids="333220680", templateparams=templateparam, mediaitems='http://opensocial.myspace.com/roa/09/mediaitemcomments/333220680/@self')
OpenSocial v0.9 Update Status Mood
Resource: http://opensocial.myspace.com/roa/09/statusmood/@me/@self Description: Update/Set Status Mood Parameters: @person_id (mandatory parameter) current person id e.g: @me Possible values for option parameters { "currentLocation":{ "latitude":"47.604832", "longitude":"-122.337549" }, "moodName":"excited", "status":"Working on Ruby SDK" } Example : set_statusv9(person_id="@me",latitude='47',longitude='122',moodname='excited',status='Pythond SDK Completed') Details: http://wiki.developer.myspace.com/index.php?title=OpenSocial_v0.9_StatusMood
OpenSocial v0.9 - Update existing Album
Resource: http://opensocial.myspace.com/roa/09/albums/@me/@self/%s Parameters: @person_id (mandatory parameter) current person id e.g: @me @album_id (mandatory parameter)Id of album which you want to update @caption (Optional parameter)use in place of title. @location (optional parameter) @privacy (optional parameter) specifies visibility for album, it can be one of 'Everyone', 'FriendsOnly' or 'Me' Description: Update album with new values of parameters specified Details: http://wiki.developer.myspace.com/index.php?title=OpenSocial_v0.9_Albums
OpenSocial v0.9 - Update a single key to AppData for a single user
Resource: http://opensocial.myspace.com/roa/09/appData/@me/@self/ Description: Add a single key AppData for a single user Parameter: @person_id (mandatory parameter) current person id e.g: @me @app_id (mandatory parameter) refers to applicaiton id for which user wants to update data @key (mandatory parameter).refers to the name of key which will be updated @value (mandatory parameter).refers to the value of key which will be updated Details: http://wiki.developer.myspace.com/index.php?title=OpenSocial_v0.9_AppData
Real Time Stream
Resource: http://api.myspace.com/stream/subscription/{subscriptionId}? Description: Update subscription Update Subscription Usage : updateSubscriptionV9('1234', 'All','http://myspace.mycompany.com/handler.ashx','{}','',1,1); Details: http://wiki.developer.myspace.com/index.php?title=Category:Real_Time_Stream


圖書館 or 健身房?
來到兵器連認識了 Zack, Vibert 等人以後, 寢室就變成了他們的健身房. 而我與晨勃, 屈暄等人則把寢室當成貨真價實的圖書館.
Markov Random Fields
Undirected graphical representation of a joint probability of voting preferences over four individuals. The figure on the right illustrates the pairwise factors present in the model. As a motivating example, suppose that we are modeling voting preferences among persons . Let’s say that , , , and are friends, and friends tend to have similar voting preferences. These influences can be naturally represented by an undirected graph.
One way to define a probability over the joint voting decision of is to assign scores to each assignment to these variables and then define a probability as a normalized score. A score can be any function, but in our case, we will define it to be of the form
where is a factor that assigns more weight to consistent votes among friends , e.g.:
The factors in the unnormalized distribution are often referred to as factors. The final probability is then defined as
where is a normalizing constant that ensures that the distribution sums to one.
When normalized, we can view as an interaction that pushes ’s vote closer to that of . The term pushes ’s vote closer to , and the most likely vote will require reconciling these conflicting influences.
Note that unlike in the directed case, we are not saying anything about how one variable is generated from another set of variables (as a conditional probability distribution would do). We simply indicate a level of coupling between dependent variables in the graph. In a sense, this requires less prior knowledge, as we no longer have to specify a full generative story of how the vote of is constructed from the vote of (which we would need to do if we had a factor). Instead, we simply identify dependent variables and define the strength of their interactions; this in turn defines an energy landscape over the space of possible assignments and we convert this energy to a probability via the normalization constant.
Formal definition
A Markov Random Field (MRF) is a probability distribution over variables defined by an undirected graph in which nodes correspond to variables . The probability has the form
where denotes the set of cliques (i.e. fully connected subgraphs) of . The value
is a normalizing constant that ensures that the distribution sums to one.
Thus, given a graph , our probability distribution may contain factors whose scope is any clique in , which can be a single node, an edge, a triangle, etc. Note that we do not need to specify a factor for each clique. In our above example, we defined a factor over each edge (which is a clique of two nodes). However, we chose not to specify any unary factors i.e. cliques over single nodes.
Comparison to Bayesian networks
Examples of directed models for our four-variable voting example. None of them can accurately express our prior knowledge about the dependency structure among the variables.
In our earlier voting example, we had a distribution over that satisfied and (because only friends directly influence a person’s vote). We can easily check by counter-example that these independencies cannot be perfectly represented by a Bayesian network.
However, the MRF turns out to be a perfect map for this distribution.
More generally, MRFs have several advantages over directed models:
- They can be applied to a wider range of problems in which there is no natural directionality associated with variable dependencies.
- Undirected graphs can succinctly express certain dependencies that Bayesian nets cannot easily describe (although the converse is also true)
They also possess several important drawbacks:
- Computing the normalization constant requires summing over a potentially exponential number of assignments. We will see that in the general case, this will be NP-hard; thus many undirected models will be intractable and will require approximation techniques.
- Undirected models may be difficult to interpret.
- It is much easier to generate data from a Bayesian network, which is important in some applications.
It is not hard to see that Bayesian networks are a special case of MRFs with a very specific type of clique factor (one that corresponds to a conditional probability distribution and implies a directed acyclic structure in the graph), and a normalizing constant of one. In particular, if we take a directed graph and add side edges to all parents of a given node (and removing their directionality), then the CPDs (seen as factors over a variable and its ancestors) factorize over the resulting undirected graph. The resulting process is called moralization.
Thus, MRFs have more power than Bayesian networks, but are more difficult to deal with computationally. A general rule of thumb is to use Bayesian networks whenever possible, and only switch to MRFs if there is no natural way to model the problem with a directed graph (like in our voting example).
Independencies in Markov Random Fields
Recall that in the case of Bayesian networks, we defined a set of independencies that were described by a directed graph , and showed how these describe true independencies that must hold in a distribution that factorizes over the directed graph, i.e. .
In an MRF, a node is independent from the rest of the graph given its neighbors (which are reffered to at the Markov blanket of .
What independencies can be then described by an undirected MRF? The answer here is very simple and intuitive: variables are dependent if they are connected by a path of unobserved variables. However, if ’s neighbors are all observed, then is independent of all the other variables, since they influence only via its neighbors.
In particular, if a set of observed variables forms a cut-set between two halves of the graph, then variables in one half are independent from ones in the other.
Formally, we define the Markov blanket of a variable as the minimal set of nodes such that is independent from the rest of the graph if is observed, i.e. . This notion holds for both directed and undirected models, but in the undirected case the Markov blanket turns out to simply equal a node’s neighborhood.
In the directed case, we found that , but there were distributions whose independencies could not be described by . In the undirected case, the same holds. For example, consider a probability described by a directed v-structure (i.e. the explaining away phenomenon). The undirected model cannot describe the independence assumption .
Conditional Random Fields
An important special case of Markov Random Fields arises when they are applied to model a conditional probability distribution . In this case, and are vector-valued variables; we are typically given and want to say something interesting for . Typically, distributions of this sort will arise in a supervised learning setting, where will be a vector-valued label that we will be trying to predict. This setting is typically referred to as structured prediction.
Example
不運動, 我會死
It is often useful to view MRFs in a way where factors and variables are explicit and separate in the representation. A factor graph is one such way to do this. A factor graph is a bipartite graph where one group is the variables in the distribution being modeled, and the other group is the factors defined on these variables. Edges go between factors and variables that those factors depend on.
This view allows us to more readily see the factor dependencies between variables, and later we’ll see it allows us to compute some probability distributions more easily.
| Index | Previous | Next |


Modal Browser which can be used in the application
Link to blog: Design Studio SDK: In-App Modal Browser Popup


Dylan Couzon
Hard-working, methodical, and resourceful Full-stack web developer looking for a job in San
Francisco, CA.
Passionate about puzzles and problem solving, I have been coding as a hobby for over 12
years.
Student at UC Berkeley Extension, I hope to graduate in June 2021.
The Vaccinator
This App has been realized as part of our first group project at UC Berkeley coding Bootcamp
It allows the user to look for a specific state inside the US and get COVID-19 related data,
vaccination data, and where to find available vaccine appointments.
The App also includes a color-coded and interactive map with real-time data to have an idea of
the Covid-19 vaccination progress in the US.


--- layout: page title: About header-img: "img/about-bg.png" ---
My name is Brittany and I am studying to be a Software Engineer. My dev.to


I am always open for freelance work.
Contact meAbout me
A skilled software engineer specializing in front-end development for web and mobile applications. Extensive experience in multiple coding languages including Javascript (ReactJS, Angular, ES5, and custom frameworks), Python (Flask, Django), and Java (Android Native Programming, general), and the extension of enterprise level APIs. Implemented innovative designs for UI/UX, developed and designed UX templates, applied rigid pixel-perfect design standards, and employed strategic optimization for front-end rendering and display.
An interactive dashboard for a web application using advanced web techniques including SVG graphics and JavaScript programming. The project involves creating tables, charts, graphics and other user interface components in a manner that promotes interactivity and usability.
A responsive, mobile-friendly registration form using a wide variety of HTML form input types and attributes.
Interactive image galleries are a common feature of many websites, from photo sites to e-commerce applications. In this project I have used HTML, CSS and the popular programming language JavaScript to create an interactive, searchable gallery of photos.
A browser version of “Wheel of Success”, a word guessing game. I've used Javascript to come up with a random phrase that players will try to guess by entering different letters into the program.
Many sites — Twitter, Facebook, IMDB, and Wikipedia to name a few — offer a vast sea of data that you can access and display on your own web pages. Using JavaScript, I've created an employee directory by communicating with a third-party API (Application Programming Interface).
A style guide built using SASS that can act as your own personal and custom Bootstrap that you can drop into any of your projects to speed up styling, layout and development in general.


Task
Implement a function
add
that adds 2 numbers
Use reduce to sum up the values within an array of numbers.


Access to a global network of research partners and customers.
World-class tech lab with all the tools for designing the future.
We facilitate an ongoing exchange of ideas and skills between respected peers.
Closed token-based economy is a new way to monetise expertise and share in value.


BTS teases new music in Paper interview
by Annie MartinNov. 19 (UPI) -- South Korean boy band BTS says it has new music in the works.
The K-pop group appears on the cover of Paper magazine's new "Break the Internet" issue, and discussed its future in the interview.
"We are currently practicing and working on new songs so we can show you the best sides of ourselves. Please look forward to it," the group said.
BTS last released the EP Map of the Soul: Persona in April. The group announced in August that it would take an "extended period of rest and relaxation" after six busy years of touring and recording.
BTS is now back at work and will perform at the KIIS Jingle Ball concert Dec. 6. BTS members Jin, Suga, J-Hope, RM, Jimin, V and Jungkook said the group hopes to try new styles of music in the future.
"I want to show our various sides that reflect the progression of our age as well as our emotions and sensibilities," RM said.
"I want to try something in the genre of rock. I think it will come out great because our members are pretty charismatic," Jin added.
"I want to try doing music in the style of Conan Gray or 'All Tinted,'" V said.
BTS debuted as a group in 2013. The boy band is known for the singles "Spring Day," "DNA," "Mic Drop" and "Boy with Luv" featuring Halsey.


Disk Gazer is a high-definition disk measuring tool which can measure the transfer rates of a physical disk in a small unit and at any location in the disk.
Requirements
- .NET Framework 4.8
Units
- Capacity (Disk capacity) - GiB
- Block (Size of block) - KiB
- Area (Size of area) - GiB
- Location (Location of area) - GiB
- Transfer rate (Y axis of chart) - MB/s (1,000,000 Bytes / second)
- Location (X axis of chart) - MiB
Remarks
Measuring method
This app measures transfer rate of sequential read from a physical disk. Since it only reads the disk without using file system, existence of partitions will not matter to the results and its contents will not be affected.
The measuring will be done by native method (default, through Win32 console app) or P/Invoke method (directly from Window app). Although the both methods are identical in essence, in general, native one is a little faster.
"Block offset"
Fraction next to Block (block size) is for "block offset" that is calculated by multiplying block size by this fraction. The unit is KiB.
If block offset is smaller than block size (the fraction is smaller than 1/1), this app will read the same times as the bottom number of fraction, offsetting the starting address by block offset while keeping block size. Then, actual scores that contain address of each block offset in their coverages will be collected and their average will be used as score of that address.
For example, if block size is 1024KiB and block offset is 256KiB (the fraction is 1/4), this app will read 4 times changing the starting address 0KiB, 256KiB, 512KiB, 768KiB. Then, to get score at address of 1024KiB (starting at 1024KiB and ending at 1280KiB), actual scores at addresses of 256KiB, 512KiB, 768KiB, 1024KiB will be collected and their average will be calculated.
Purpose of this block offset is to get calculated score of unit that is smaller than block size when block size cannot be made smaller in order to get meaningfull results or to screen out seemingly false scores.
"Area ratio"
Fraction next to Location (area location) is for "area ratio" that represents the ratio of blocks to be actually read against the total blocks in the area. This function will be useful when area size is quite large such as the whole disk.
If area ratio is other than 1/1, this function will be enabled. This app will divide blocks in the area into a number of groups of the same length and read only the leading 8 blocks of each group in sequence (the first block will not be included in the result to avoid the effect of seek time). For example, if area ratio is 1/16, a group will consist of 128 blocks and only the leading 8 blocks will be read and remaining 120 blocks will be ignored.
Outliers
This app removes outliers that are outside range of twice the standard deviation from the average at each location.
License
- MIT License
Libraries
- Menu icons: Visual Studio Image Library
Developer
- emoacht (emotom[atmark]pobox.com)


PCANet: A simple deep learning baseline for image classification?
Each stage in a CNN consists of 3 layers:
- convolutional filter bank
- nonlinear processing
- feature pooling
Replace these:
| convolutional filter bank |
PCA filter |
| nonlinear processing |
binary quantization (hashing) |
| feature pooling |
block-wise histograms of binary codes |
Lesson: Deep learning has a lot of hype, but in fact simpler, better theoretically justifiable architectures can do just as well or better! In particular, one weakness of DL is that it depends on parameter tuning expertise and ad hoc tricks.
Examples:
- ScatNet (wavelet scattering network): filters are wavelet operators, so no learning is needed. (These don’t work so well when there is intra-class variability with illumination change and corruption.)
- PCANet cf. OPCA.
Motivations:
- design a simple deep learning network which should be very easy, even trivial, to train and to adapt to different data and tasks.
- such a basic network could serve as a good baseline for people to empirically justify the use of more advanced processing components or more sophisticated architectures for their deep learning networks.
Architecture
Input: \(N\) training images \(\{I_i\}_{i=1}^N\) of size \(m\times n\).
Learn PCA: Vectorize all \(k_1\times k_2\) patches, mean-center and put them all in a matrix \(X\in \R^{k_1k_2\times Nmn}\). Do rank \(L_1\) PCA on \(X\). The \(l\)th filter (\(l\in [L_1]\)) is \[ W_l^1 := mat_{k_1,k_2}(q_l(XX^T))\] where \(mat_{k_1,k_2}\) maps \(\R^{k_1k_2}\to \R^{k_1\times k_2}\) and \(q_l\) is the \(l\) largest eigenvectors.
Now let \(I_i^l = I_i * W_l^1\). (Zero-pad \(I_i\) so that \(I_i^l\) has the same size.)
You can apply this multiple times. Suppose we apply it twice to get \(I_i^{l_1, l_2}\).
- Hashing: Binarize the outputs to get \[\{b_{l_1,l_2} = H(I_i^{l_1,l_2})\}\] where \(H\) is Heaviside function. Let \[T_i^{l_1} := \sumo{l_2}{L_2} 2^{l_2-1} b_{l_1,l_2}.\] (I.e., treat \((b_{l_1,l_2})_{l_2=1}^{L_2}\) categorically.)
Histogram: Express histogram with \(L_2\) bins as a vector \(Bhist(T_i^l)\). The feature vector of \(I_i\) is \[f_i := \text{map Bhist }[T_i^{1:L_1}]\in \R^{2^{L_2}L_1B}.\]
On many layers: Note that we DON’T stack by repeating 1-3. Instead, 2-3 happen only once at the end. The stacking happens within 1—doing PCA multiple times.
Note:
- Nonoverlapping blocks are suitable for faces.
- Overlapping blacks are useful for digits, textures, and objects.
- Histogram gives some translation invariance (why??).
- Model parameters \(k_1,k_2,L_1,L_2\). Ex. \(L_1=L_2=8\).
- Two-stage PCANet is good.
- PCANet with absolute rectification layer (??) after the first stage doesn’t help.
- The overall process is linear. ?? Combining two stages. Two stages works better. Two-stage PCA filters have a low-rank factorization. It has \(L_1k_1^2 + L_2k_2^2\) rather than $L_1L_2(k_1+k_2-1)^2 $ variables.
Variations
- RandNet: use random filters (from standard Gaussian)
- LDANet: Use multi-class linear discriminant analysis. (Think: supervised version of PCA.) LDA
(Does this mean LDANet will fail on things like concentric circles?)
Experiments
Face recognition, MNIST.
MNIST: basic (10000-2000-50000), rot, noise bg, image bg, etc.
Questions
- What is “block size”? (vs. filter, image size)
- How do you classify using PCANet? (ex. do you train a SVM on top?)
- How about stacking?
- An intriguing research direction will then be how to construct a more complicated (say more sophisticated filters possibly with discriminative learning) or deeper (more number of stages) PCANet.
- Some preprocessing of pose alignment and scale normalization might be needed for good performance guarantee. The current bottleneck that keeps PCANet from growing deeper (e.g., more than two stages) is that the dimension of the resulted feature would increase exponentially with the number of stages.