Codebase Alternatives
Hi,
I was wondering if anyone knew of any Codebase alternatives? I had heard that we should use SQLDeveloper integrated with Subversion and the new Enterprise Manager change management pack to replace Codebase promotion, but nothing concrete from Oracle.
Thanks,
Mark
JDeveloper and SQL Developer let you manage code that's kept in files and databases - together, they replace Codebase's Maintain Versions, Maintain Project, and Object Finder functions.
Enterprise Manager's Configuration Management Pack tracks changes to files and database records - it replaces Codebase's Change Finder functions.
Enterprise Manager's Application Change Management Pack replaces Codebase's promotion functions. It lets you combine your developers' changes into patches, then define workflows for approving and applying those patches.
Similar Messages
-
Simpler alternative to codebase server.
Hello people.
I understand that one needs a code base server to be a repository for code that might be downloaded so to be executed on the machine which has downloaded it.
I have alluded to this in earlier posts; I desire an alternative to this code base server way of handling code distribution. What I would like to do is remove the necessity of having this code base server third party, so a client only has to consult the same service it gets everything else from.
Any suggestions? I'm reasonably thick-skinned, and won't be hurt if they make me look a bit ignorant. I will be thankful for the enlightenment.ejp wrote:
Additionally, my server application will deploy the code to a client which is running a client application (not a web browser) that can talk to my server.Well it won't unless you find a solution that will do that. RMI code mobility and JWS are the only solutions I'm aware of. Both require a Web server, i.e. in practical terms IIS, Apache Web Server, Tomcat, ...
The code that runs on the client needs to exchange information with the server from where it was downloaded.So it all depends on what exactly you mean by 'server'. If you mean 'host', JWS and RMI code mobility do that. If you mean XXX for some other XXX, I'm not aware of any other XXX that will do that. If you mean XXX = yur own server code, you'll have to write it, and there's no point to that.Yes, I was a bit ambiguous. Hopefully this clarifies everything.
My client application needs some code from elsewhere to complete its function. This 'function' relates to how it must exchange information with a server, and I intend this 'elsewhere' to be from a server to which the client must first connect to.
Java has this thing in RMI called a Codebase Server. One might think I'd be happy using a third party server to store code. Alas; code is data. One should be able to use RMI to get code from one program to another as if it were any other data.
So why not code?
Excuse me for seeming presumptuous, but this looks rather like a lapse in simple thinking. It hence appears to imply that I have to do this "simple thinking" myself. However, its absence may mean that I will have to delve into the innards of RMI and Java class loading. This will be both a distraction and a delay in delivery of a working application. If only simple thinking were practised more often.
If there is anyone who has had this simple thought before me, I would welcome your help. -
Silverlight has a sandboxed file storage location as well as a facility to store key/value pairs.
It looks like JavaFX had some similar tools in 1.x, but they appear to be gone in 2.2.
Can anyone point me toward an alternative for both services?
Thanks,
MichaelHere you go.... I think this is almost reusable as is (my method logging methods need to be removed, and the directory for standalone persistence needs to be changed for your implementation).
PersistenceApi
public interface PersistenceApi {
public InputStream getInputStream(String fileName);
public boolean createNewFile(String fileName);
public OutputStream getOutputStream(String fileName);
}PersistenceManager.... its like a factory, responsible for determining whether or not in Webstart mdoe or not and instantiating the correct implementation of PersistenceApi (not thread safe)
public class PersistenceManager {
//static variables
private static PersistenceApi persistence;
//public functions
public static PersistenceApi getPersistenceApi() {
if (persistence == null) {
String homeDir = null;
try {
homeDir = System.getProperty(game.CONSTANTS.STANDALONE_INSTALL_DIR_SYSTEM_PROPERTY);
} catch (SecurityException e) {
game.Log.debug("in PersistenceManager.getPersistenceApi, got exception");
if (homeDir != null) {//...in standalone mode
game.Log.debug("in PersistenceManager.getPersistenceApi, in standalone mode, homeDir == " + homeDir);
persistence = new StandalonePersistence();
} else {//...in web start mode
game.Log.debug("in PersistenceManager.getPersistenceApi, in web start mode");
persistence = new JnlpPersistence();
return persistence;
}JnlpPersistence
public class JnlpPersistence implements PersistenceApi {
//private variables
private URL codeBase = null;
private static PersistenceService persistenceService = null;
//constructors
JnlpPersistence() {
setCodeBase();
makePersistenceService();
//private functions
private void makePersistenceService() {
if (persistenceService == null) {
try {
persistenceService = (PersistenceService) ServiceManager.lookup("javax.jnlp.PersistenceService");
} catch (UnavailableServiceException e) {
game.Log.debug("in JnlpPersistence.makePersistenceService(), got exception while getting instance of PersistenceService. " + e.getMessage());
assert persistenceService != null;
private void setCodeBase() {
if (codeBase == null) {
BasicService bs;
try {
bs = (BasicService) ServiceManager.lookup("javax.jnlp.BasicService");
codeBase = bs.getCodeBase();
} catch (UnavailableServiceException e) {
game.Log.debug("in JnlpPersistence.setCodeBase(), got exception while getting codeBase from. " + e.getMessage());
assert codeBase != null;
//public functions
@Override
public InputStream getInputStream(String fileName) {
String thisMethodsName = "in JnlpPersistence.getInputStream(), ";
URL newFileUrl;
FileContents newFc;
try {
newFileUrl = new URL(codeBase.toExternalForm() + fileName);
newFc = persistenceService.get(newFileUrl);
if (newFc == null) {
game.Log.debug(thisMethodsName + "filecontents is null for filename = " + fileName);
return null;
if (!newFc.canRead()) {
game.Log.debug(thisMethodsName + "filecontents is not readable for filename = " + fileName);
return null;
} catch (Exception e) {
game.Log.debug(thisMethodsName + "caught exception while getting filecontents for filename = " + fileName + ". " + e.getMessage());
return null;
InputStream is;
try {
is = newFc.getInputStream();
} catch (Exception e) {
game.Log.debug(thisMethodsName + "caught exception while getting input stream for filename = " + fileName + ". " + e.getMessage());
return null;
return is;
@Override
public boolean createNewFile(String fileName) {
URL newFileUrl;
try {
newFileUrl = new URL(codeBase.toExternalForm() + fileName);
persistenceService.create(newFileUrl, CONSTANTS.MAX_PROFILE_FILE_SIZE);
} catch (Exception e) {
game.Log.debug("in JnlpPersistence.createNewFile, got exception while creating file with name = " + fileName + ". " + e.getMessage());
return false;
return true;
@Override
public OutputStream getOutputStream(String fileName) {
String thisMethodsName = "in JnlpPersistence.getOutputStream, ";
URL newFileUrl;
FileContents newFc;
try {
newFileUrl = new URL(codeBase.toExternalForm() + fileName);
newFc = persistenceService.get(newFileUrl);
if (newFc == null) {
game.Log.debug(thisMethodsName + "filecontents is null for filename = " + fileName);
return null;
if (!newFc.canWrite()) {
game.Log.debug(thisMethodsName + "filecontents is not writeable for filename = " + fileName);
return null;
} catch (Exception ex) {
game.Log.debug(thisMethodsName + "caught exception while getting filecontents for filename = " + fileName + ". " + ex.getMessage());
return null;
OutputStream os;
try {
os = newFc.getOutputStream(true);
} catch (Exception e) {
game.Log.debug(thisMethodsName + "caught exception while getting OutputStream for filename = " + fileName + ". " + e.getMessage());
return null;
return os;
}StandalonePersistence
public class StandalonePersistence implements PersistenceApi {
//private variables
private final String SAVE_DIR = ".tm" + CONSTANTS.PATH_DELIMITTER;
private String savePath;
private File savePathFile;
//constructor
StandalonePersistence() {
savePath = System.getProperty(game.CONSTANTS.STANDALONE_INSTALL_DIR_SYSTEM_PROPERTY) + CONSTANTS.PATH_DELIMITTER + SAVE_DIR;
savePathFile = new File(this.savePath);
if (savePathFile.exists() == false) {
savePathFile.mkdir();
//public functions
@Override
public InputStream getInputStream(String fileName) {
String thisMethod = "in StandalonePersistence.getInputStream, ";
File file = new File(savePath + CONSTANTS.PATH_DELIMITTER + fileName);
if (file.exists() == false) {
game.Log.debug(thisMethod + "file does not exist");
return null;
if (file.canRead() == false) {
game.Log.error(thisMethod + "file is not readable");
return null;
InputStream is = null;
try {
is = new FileInputStream(file);
} catch (FileNotFoundException e) {
game.Log.error(thisMethod + "got exception while getting inputStream. " + e.getMessage());
return is;
@Override
public boolean createNewFile(String fileName) {
File file = new File(savePath + CONSTANTS.PATH_DELIMITTER + fileName);
try {
return file.createNewFile();
} catch (IOException ex) {
game.Log.error("in StandalonePersistence.createNewFile, got exception while creating file " + fileName + ". " + ex.getMessage());
return false;
@Override
public OutputStream getOutputStream(String fileName) {
String thisMethod = "in StandalonePersistence.getOutputStream, ";
File file = new File(savePath + CONSTANTS.PATH_DELIMITTER + fileName);
if (file.exists() == false) {
game.Log.debug(thisMethod + "file does not exist");
if (this.createNewFile(fileName) == false) {
return null;
game.Log.debug(thisMethod + "created new file");
if (file.canWrite() == false) {
game.Log.error(thisMethod + "file is not writable");
return null;
OutputStream os = null;
try {
os = new FileOutputStream(file);
} catch (FileNotFoundException e) {
game.Log.error(thisMethod + "got exception while getting outputStream. " + e.getMessage());
return os;
}Edited by: jmart on Aug 30, 2012 11:17 AM
Edited by: jmart on Aug 30, 2012 11:20 AM -
Hi !
I'm currently installing an Oracle Database to host our production website coded in PLSQL with HTP package. Currently for development, we are using PLSQL Gateway to publish our pages.
But in production, PLSQL Gateway might be too weak to use it with a lot of visitors. Is there a stronger alternative to expose PLSQL in web pages ?
Thank you !>
I'm currently installing an Oracle Database to host our production website coded in PLSQL with HTP package. Currently for development, we are using PLSQL Gateway to publish our pages.
But in production, PLSQL Gateway might be too weak to use it with a lot of visitors. Is there a stronger alternative to expose PLSQL in web pages ? There are several options:
1. The Embedded PL/SQL Gateway (DBMS_EPG), which is a webserver built into the database itself
2. The Oracle HTTP Server (OHS), which is based on the Apache codebase, with mod_plsql
3. Java-based web servers (such as Tomcat, WebLogic, and others) with the open-source DBPrism plugin, or the upcoming, Oracle-supported Apex Listener
4. And Microsoft Internet Information Server (IIS) with the Thoth Gateway module, see http://code.google.com/p/thoth-gateway/
- Morten
http://ora-00001.blogspot.com -
Provide alternative content for object
I'm trying to make my site accessible. I have used Bobby to
check for accessibility. I have an error pointing to my embedded
flash moive. The error is provided alternative content for each
object, line 227.
How do I do that?
Line 227:
<param name="quality" value="high" />
<object
classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="
http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,29,0"
width="600" height="80">
<param name="movie" value="flash/indexFlash_071206.swf"
/>
<param name="quality" value="high" />
<embed src="flash/indexFlash_071206.swf" quality="high"
pluginspage="
http://www.macromedia.com/go/getflashplayer"
type="application/x-shockwave-flash" width="600" height="80"
alt="This is a flash movie of traction power and overhead catenary
equipment manufactured by IMPulse NC."></embed>
</object>Trying to make Flash accessible is like trying to make a silk
purse from...
well, a sow's ear, you know? What does this Flash do for you?
Murray --- ICQ 71997575
Adobe Community Expert
(If you *MUST* email me, don't LAUGH when you do so!)
==================
http://www.dreamweavermx-templates.com
- Template Triage!
http://www.projectseven.com/go
- DW FAQs, Tutorials & Resources
http://www.dwfaq.com - DW FAQs,
Tutorials & Resources
http://www.macromedia.com/support/search/
- Macromedia (MM) Technotes
==================
"pqer" <[email protected]> wrote in message
news:e9m667$qg7$[email protected]..
> I'm trying to make my site accessible. I have used Bobby
to check for
> accessibility. I have an error pointing to my embedded
flash moive. The
> error
> is provided alternative content for each object, line
227.
>
> How do I do that?
>
> Line 227:
>
> <param name="quality" value="high" />
>
> <object
classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
> codebase="
http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#ve
> rsion=6,0,29,0" width="600" height="80">
> <param name="movie"
value="flash/indexFlash_071206.swf" />
> <param name="quality" value="high" />
> <embed src="flash/indexFlash_071206.swf"
quality="high"
> pluginspage="
http://www.macromedia.com/go/getflashplayer"
> type="application/x-shockwave-flash" width="600"
height="80" alt="This is
> a
> flash movie of traction power and overhead catenary
equipment manufactured
> by
> IMPulse NC."></embed>
>
> </object>
> -
Jmf abandoned? Are there alternatives?
Hey people,
I think it's been a month since i started searching more about JMF, and the more i look more doubts i get. My problem is:
I work on a web-based system for health assistance. Its objective is to let less-experienced doctors that work in smaller centers of medicine send info about some pacients to higher level doctors and ask for a second opinion. This info include: pacients' laboratory exams, videos, photos,etc. You can access the system via browser, and you just need a login and pw to use it.
The main problem is with video exhibition, actually there are 3 problems about video exhibition:
1.Our videos are played on an applet that uses JMF 2.1.1and because of that, the doctors that access the system for the 1st time will always have to install JMF. For us, this is a problem because our clients aren't people from IT that are used to install and uninstall all the time.
2. JMF has a limited number of formats and codecs and, sometimes, a client has the GREAT idea of encoding the video in a not-standard format like Divx 5.0 (DX50). So we have to look all over the net trying to find some sort of implementation of the codec in java. And since the client machine only installs the jmf, any alteration has to be sent with the applet. Here is some part of the html code:
<br><br>
<object classid="clsid:8AD9C840-044E-11D1-B3E9-00805F499D93"
width = 800 height = 600 codebase="http://java.sun.com/products/plugin/1.1.1/jinstall-111-win32.cab#Version=1,1,1,0">
<param name = CODE value = healthnet.player.MultiApplet.class >
<param name = CODEBASE value = "${diretoryArchives}/player" >
<!-- remeber of modifying the archives!!! -->
<param name = ARCHIVE value = Player.jar,jmf.jar,sound.jar>
<param name="type" value="application/x-java-applet;version=1.1">
<param name = path value = "${diretoryExams}/${exam}">
<param name = "size" value = "${size}">
<!-- remember of modifying the archives!!! -->
<embed type="application/x-java-applet;version=1.1" java_code = PlayerApplet.class java_codebase = "${diretoryArchives}/player" java_archive = "Player.jar,jmf.jar,sound.jar" width = 800 height = 600 file = "${diretoryExams}/${exam}" pluginspage="http://java.sun.com/products/plugin/1.1.1/plugin-install.html"><noembed></noembed></embed>
</object>
<br>
We are trying to send the jmf together with the Applet but we are having some problems with native methods...
3. We are trying to find an alternative for JMF since, as I can see, sun has amost abandoned JMF. Our main focus now is to find alternatives and not to implement new codecs, and etc.
So what do you think? Is there any alternative for JMF? Do you know what people are using to play videos via browser in Java? Anything in this area can help, soo... Thanks =)Ah, about DivX, I've already tried to include ffmpeg.jar and fob4jmf.jar inside jmf.jar since these two have implementations of some codecs that aren't standard in jmf, but it doesn't work at all. I think that maybe I firstly have to find out how to send jmf together with the applet to the client-browser... or maybe not... maybe jmf isn't the solution to anything anymore... Anyway! Waiting for answers
-
How can I assign points to the alternatives in a question?
Hi! I am building my first quiz in Captivate and I have this little problem I haven´t been able to solve. I want a make a test that meassures how stress you are att work. It looks like a survey, I´ll have about 20 or more questions with the same type of alternatives, no right or wrong alternatives, but you choose the one you agree the most with. The thing is that i want to give a value point to each alternative and be able to have a score at the end. See the example.
How often do you feel stressed att work?
1. never : 0 points
2. one a week: 2 points
3. three times a week: 3 points
4. Everyday: 4 points
Att the end, the score you get tells you how stressed you are, but instead of showing a result in term of points, you´ll get a text giving you feedback and recomendations for better health. Can I do that in Captivate? I haven´t been able to find a way to do that yet...
Thanks for any help you can give me!Hello,
Tried putting something together that could be possible, concentrated on the workflow. There will be some repetitive tasks to be done however, problem is that a click box cannot stay for a whole project, which means that a click box gets its proper ID on each slide. Will try to explain, it is up to you to judge if this is acceptable, or if you'd go better with a Flash app.
Created (for the moment, perhaps you'll need more if p.e. for Q1-Q10 you need a separate result for A and for B, result for Q11-Q20...) two user variables:
v_AClick to store the number of clicks on A-option
v_BClick to store the number of clicks on B-option
The results can then be used later on for a condition (did not write it yet).
Created a first slide with these objects:
dummy Text Caption 'Option A' (will be replaced later on with question text)
click box covering up this Text Caption, named it (ID) ClickA1 (this is the tedious part, has to be done for each CB; ClickA2, ClickA3...)
dummy Text Caption 'Option B' (will be replaced later on with question text)
click box covering up this Text Caption, named it (ID) ClickB1 (this is the tedious part, has to be done for each CB; ClickB2, ClickB3...)
imported a 'sign' to be showed after the user clicked into the Library, and put an instance to the right of each Text Caption, those were labeled VinkA and VinkB. Very important: set those instances to 'Show for the entire project', which avoids to have them duplicated to each slide, we will hide and show them as necessary.
button 'Next' which on Succes jumps to next slide.
The blue Text Caption was for me, to check if the actions were functioning, shouldn't be there in the end file.
I created a first Advanced action, labeled it HideVink (sorry for the Dutch, Vink = the green symbol), to be triggered on entering the slide:
Hide VinkA
Hide VinkB
Second/third action, labeled A_Action1/B_Action1 to be triggered by clicking on the ClickA1/ClickB2 with these actions:
increment v_AClick/v_BClick with 1
hide the other clickbox, thus ClickB1/ClickA1 to avoid that the user could click on both options
show AVink/BVink
Here is an example, action A_Action1
Those two actions have to be duplicated for each Question slide (A_Action2, B_Action2,....). What has to be changed in the duplicates is only the number of the Click Box, that is why I labeled them to make the process easier.
Now I duplicated the slide as many times as necessary. The actions for button and entering slide are OK, but the actions for the click boxes have to be adapted (tedious).
Why did I use 'dummy' Text Captions: I should export (File menu) the Text Captions to a Word-document, change the dummy texts (left column) to the real captions (much easier in one doc) and re-import them into the CP-file.
That was my homework, as promised. Hope it helps, even if you choose to go the Flash-way after all.
Lilybiri -
Alternative Periods in Report Painter
I'm trying to create a report painter report for labour efficiency, it compares actual labour confirmations to a statistical key figure for payroll hours.
I have the basic elements, but my problem is this. We currently run our accounts on a calendar month basis, so we have 12 periods in FI. This report is required on a weekly basis for each weeks payroll. Is it possibly to report totals for a given week, when that is not your accounting period?
I can't see any obvious characterisics that will give me a weekly total of each figure, but I'm wondering if it os possible to define alternative periods (e.g. 52/53 week years ending each sunday for a period, and bring that in as a row characteristic).
Has anybody managed to achieve anything like this, and if so how?
Postings can occur anytime in the week, so I don't think posting date is an option, but may be if you can specify ranges that can be logically extrapelated in the report (i.e. Mon-Sun).
Thanks for any advice on this
GrahamHas anybody got any comments or advice on this?
Graham -
A semiautomatic alternative to /etc/fstab
This is probably highly redundant... the chances are, someone will likely say "XYZ does that for you and you can configure it in 5 minutes", but here goes anyways.
I wanted a simple way to mount the disks in my computer to the same location regardless of where they were in the system (thus via UUID) but what I *didn't* want was to have to copy/type the UUID myself. The following possibly shaky bash script is the result.
First, however, a (very real-world) demonstration of its functionality!
/disks/ + ./domount
Using scriptdir "/disks/.mountscripts".
Running mount... [ok]
[Disk ST3250620A_5QE4M336]
group0-root -> /disks/250gb: [ok]
38067a33-0556-4cab-a5c5-c96b313bd174 -> /disks/250gb/boot: [ok]
21D4-2E62 -> /disks/250gb/data: [ok]
group0-home -> /disks/250gb/home:
== mount error ==
mount: wrong fs type, bad option, bad superblock on /dev/mapper/group0-home,
missing codepage or helper program, or other error
In some cases useful info is found in syslog - try
dmesg | tail or so
=================
[R]etry/Skip [P]artition/Skip [D]isk/[Q]uit? q
/disks/ + fsck.jfs /dev/mapper/group0-home
fsck.jfs version 1.1.15, 04-Mar-2011
processing started: 11/10/2011 20:28:10
Using default parameter: -p
The current device is: /dev/mapper/group0-home
Block size in bytes: 4096
Filesystem size in blocks: 52099072
**Phase 0 - Replay Journal Log
Filesystem is clean.
/disks/ + ./domount
Using scriptdir "/disks/.mountscripts".
Running mount... [ok]
[Disk ST3250620A_5QE4M336]
group0-root -> /disks/250gb: (already mounted)
38067a33-0556-4cab-a5c5-c96b313bd174 -> /disks/250gb/boot: (already mounted)
21D4-2E62 -> /disks/250gb/data: (already mounted)
group0-home -> /disks/250gb/home: [ok]
group0-var -> /disks/250gb/var: [ok]
partition1.vfat -> /disks/250gb/home/backup/80gb/mnt/partition1.vfat: [ok]
partition2.vfat -> /disks/250gb/home/backup/80gb/mnt/partition2.vfat: [ok]
partition3.vfat -> /disks/250gb/home/backup/80gb/mnt/partition3.vfat: [ok]
partition4.ext3 -> /disks/250gb/home/backup/80gb/mnt/partition4.ext3: [ok]
data2 -> /disks/250gb/home/backup/32gb-2/mnt/data2: [ok]
[Disk ST340014A_5MQ4HB90]
0854-08DE -> /disks/20gb-1/data-1: [ok]
4846-D7E2 -> /disks/20gb-1/data-2: [ok]
3070DB1E70DAE99C -> /disks/20gb-1/winnt: [ok]
38BB-158D -> /disks/20gb-1/pool: [ok]
[Disk WDC_WD800BB-22J_WD-WCAM9H677098]
e336c404-fca8-4f2b-9c75-81c22f339741 -> /disks/80gb: [ok]
4738-E723 -> /disks/80gb/vfat: [ok]
a827cfa1-08cf-4a24-a989-aae94ea0801b -> /disks/80gb/boot: [ok]
7bb5df89-3a90-4c92-8aa7-a94271806087 -> /disks/80gb/var: [ok]
09b652b7-4f5e-4895-8464-6f972a44fdd6 -> /disks/80gb/home: [ok]
a2534aa6-b70f-442d-805e-365ee626d4be -> /disks/80gb/tmpspace: [ok]
4871-993D -> /disks/80gb/tmpspace2: [ok]
386a2a83-22e2-425c-bd48-cb0a1fad8a87 -> /disks/80gb/pool: [ok]
/disks/ +
Here's the script! (I can pastebin it if neccessary)
#!/bin/bash
# ohai from i336 :P <[email protected]>
# Oct-Nov 2011
# Public domain, no warranty. Be sure to use the "t" flag on the first run!
# This program has two modes: scan mode and run mode.
# Configuration
# =============
# You first need to create/go into the directory you want to mount your disks
# in, such as /mnt (I use /disks), and create the subdirectory ".mountscripts", or
# alternatively "programname-mountscripts" (the second directory bearing the
# name of the program/symlink, a simple mechanism to implement some flexibility).
# You can substitute any created symlinks whereever "./domount" is mentioned.
# The existance of this directory indicate that this is the work directory.
# (For added flexibility, the program will look for the second directory, the
# one bearing its name, first, then fall back on ".mountscripts" if this is not
# found.)
# Scan Mode
# =========
# After creating this directory for the first time you will want to run
# "./domount s" to generate the mountscripts into the mountscript directory
# (which is selected as specified above).
# Run Mode
# ========
# At this point, go into the mountscript directory, open all the files you find
# there in a text editor, and add in the mountpoints you want to use after the
# UUID parameter to 'partop' (an internal function defined in this file for the
# scripts).
# ** The first time you simply MUST run "./domount t" in order to see that the
# 'mount' commands are correct! **
# After this is done, run "./domount" and it will go ahead and mount the disks.
# Run "./domount u" and it will unmount everything. (No options exist for
# individual partitions as yet).
# Limitations
# ===========
# * If you use domount to mount loopback images inside real partitions and the
# real partitions are also mounted by domount, well, domount will try to
# unmount them in the same order as when it mounts... and it will break.
# Simple solution: skip however many real [p]artitions you have, then
# re-run domount again. :)
# * If you change a disk (eg add a partition), well, you'll have to delete the
# file for that disk, re-scan (domount will not touch the other scripts) then
# re-add your partitions back in. This program wasn't really designed to deal
# with that kind of situation :)
# * This program does not support LVM partitions - quite frankly, it doesn't
# even realize such things exist. Thus you will not find any LVM partitions
# listed in the generated scripts, or any "LVM partitions ignored"
# messages - indeed, if you only have LVM partitions on a given disk, the
# resulting syntactically incorrect script will contain an 'if' block with
# no content and the shell will produce an error.
toollist=
needtool=0
for tool in find lsblk blkid cfdisk xargs grep tail mountpoint; do
type -P $tool > /dev/null 2>&1
if [ $? -eq 0 ]; then
toollist="${toollist} ${tool}"
else
toollist="${toollist} [${tool}]"
needtool=1
fi
done
if [ $needtool -eq 1 ]; then
echo "This program requires the following tools in order to run. Those marked with"
echo "brackets cannot be found (using \`type') and their containing packages"
echo "likely need to be installed."
echo $toollist
exit 1
fi
sizes=(bytes KB MB GB TB)
progname=$(basename $0)
if [ -d ".mountscripts" ]; then
scriptdir="$(pwd)/.mountscripts"
elif [ -d ".${progname}-mountscripts" ]; then
scriptdir="$(pwd)/.${progname}-mountscripts"
fi
if ([[ ! -d "${scriptdir}" ]] && [[ "$1" != "s" ]]) || [[ "$1" == "h" ]]; then
cat << EOF
usage: $0 [s] [t]
s = scan
t = test run (USE THIS THE FIRST TIME AFTER YOU HAVE DONE A SCAN)
EOF
exit 1
fi
if [[ "$1" = "s" ]]; then
echo -n "Scanning disk tables... (by name)"
parttable=(); while IFS= read -r line; do parttable+=("$line"); done < \
<(find /dev/disk/by-id/ -name "scsi-SATA*" -name "*-part*" -type l | xargs stat -L -c "%t-%T %n")
echo -n ", (by UUID)"
uuidtable=(); while IFS= read -r line; do uuidtable+=("$line"); done < \
<(find /dev/disk/by-uuid/ -type l | xargs stat -L -c "%t-%T %n")
echo -ne " [ok]\nRunning blkid..."
blkidtable=(); while IFS= read -r line; do blkidtable+=("$line"); done < \
<(blkid)
echo -ne " [ok]\nRunning lsblk (uno momento)..."
lsblktable=(); while IFS= read -r line; do lsblktable+=("$line"); done < \
<(lsblk -bro name,size,fstype,model | grep -v group | tail -n +2)
echo -e " [ok]\n"
if [ ${#parttable[@]} -ne ${#uuidtable[@]} ]; then
echo 'Something is very wrong with either this program'
echo 'or your disk configuration. O.o'
exit 1
fi
echo -e "Using scriptdir \"${scriptdir}\".\n"
echo -ne "\e[1GCompiling mapping table... [ ]\e[?25l"
max=$[${#parttable[@]}*${#parttable[@]}]
runindex=0
for ((i = 0; i < "${#parttable[@]}"; i++)); do
partsplit=(${parttable[$i]})
devok=0
devname="$(readlink -f ${partsplit[1]})"
partsize=
for uuid in "${uuidtable[@]}"; do
uuidsplit=($uuid)
c=$[((runindex*43)/$[max-1])]
echo -ne "\e[29G"
if [ $c -gt 0 ]; then eval \printf "%.s#" {0..$c}; else echo -n '.'; fi
if [ $c -lt 43 ]; then eval \printf "%.s." {$[c+1]..43}; fi
((runindex++))
if [[ "${partsplit[0]}" = "${uuidsplit[0]}" ]]; then
partlabel=
devok=1
for entry in "${blkidtable[@]}"; do
if [[ "${entry:0:$[${#devname}+9]}" != "${devname}: LABEL=\"" ]]; then continue; fi
partlabel="${entry:$[${#devname}+9]}"
partlabel=$(echo -n $(echo $partlabel | cut -d'"' -f1))
done
for entry in "${lsblktable[@]}"; do
entry=($entry)
if [[ "/dev/${entry[0]}" != "$devname" ]]; then continue; fi
partsize=${entry[1]}
parttype=${entry[2]}
done
if [ ! partsize ]; then
echo "$0: error: cannot determine partition size for $devname"
exit 1
fi
devline="${partsplit[1]:26} ${uuidsplit[1]:18} ${partsize} ${parttype}${partlabel:+ $partlabel}"
map[${#map[@]}]="$devline"
fi
done
if [ $devok -eq 0 ]; then
checkparttable[${#checkparttable[@]}]="${parttable[$i]#* }"
fi
done
echo -e "\e[?25h\e[75Gdone.\n"
if [[ ${#checkparttable[@]} -gt 0 ]]; then
cat << EOF
Warning: The following partitions do not have matching UUID entries
in /dev/disk/by-uuid/.
Linux seems to be quite smart, and won't list UUIDs for LVM
members, partitions \`mount' cannot mount without the -t flag,
or extended partition headers, but /dev/disk/by-id/ will still
list them. So these are probably not a problem but may still
warrant a double-check; if these contain valid filesystems you
will need to insert them manually since their UUIDs cannot be
calculated.
EOF
for partition in "${checkparttable[@]}"; do
echo " >> $(readlink -f $partition) (/dev..by-id/${partition:26})";
done
echo
fi
find /dev/disk/by-id/ -name "scsi-SATA*" -not -name "*-part*" -type l | while read disk; do
scriptfile="${scriptdir}/${disk:26}.mount.sh"
rm -f "${scriptfile}"
if [ ! -f "${scriptfile}" ]; then
echo -ne "No mountscript found for disk ID \"${disk:26}\", creating one...\nRunning cfdisk... "
cfdtable=(); while IFS= read -r line; do cfdtable+=("$line"); done < \
<(cfdisk -Ps $disk | grep -v "Free Space" | grep -v "Unusable" | tail -n +6)
echo -ne "[ok]\nRunning smartctl... "
smartctlinfo="$(smartctl -i $disk)"
diskdevname="$(readlink -f ${disk})"
diskdevname=${diskdevname:5}
disk="${disk:26}"
disktable[${#disktable[@]}]="${disk}"
tmp=
diskparttable=
for entry in "${lsblktable[@]}"; do
entry=($entry)
if [[ "${diskdevname}" != "${entry[0]}" ]]; then continue; fi
devicename=$(echo -n $(echo "${entry[@]}" | cut -d' ' -f3-))
done
echo -e "# Script generated by domount at $(date +'%T on %D (MM/DD/YY)') for disk \"${devicename}\"\n" > "${scriptfile}"
echo '# '$(echo "$smartctlinfo" | grep '^Model Family:') >> "${scriptfile}"
echo '# '$(echo "$smartctlinfo" | grep '^Device Model:') >> "${scriptfile}"
echo -e '# '$(echo "$smartctlinfo" | grep '^User Capacity:')"\n" >> "${scriptfile}"
for part in "${map[@]}"; do
if [[ "${part:0:$[${#disk}+1]}" != "${disk}-" ]]; then continue; fi
diskparttable="${diskparttable}${part}\n";
done
mapfile -t diskparttable < <(echo -ne "${diskparttable%%\\n}" | sort -n -k1.$[${#disk}+6]n)
echo -ne "if diskexists ${disk}; then\n\t\n" >> "${scriptfile}"
for part in "${diskparttable[@]}"; do
partsplit=($part)
parttype=
for line in "${cfdtable[@]}"; do
line=($line)
if [[ "X${partsplit[0]:${#disk}+5}X" != "X${line[0]}X" ]]; then continue; fi
parttype="${line[1]}"
done
if [[ "X${parttype}X" = "XX" ]]; then
echo "$0: error: Cannot parse cfdisk output"
rm -f "${scriptfile}"
exit 1
fi
echo -ne "\t# Partition: #${partsplit[0]:${#disk}+5} (${parttype}, ${partsplit[3]}" >> "${scriptfile}"
if [[ "${partsplit[3]}" = "swap" ]]; then
echo -n " - Skipping" >> "${scriptfile}"
fi
echo -n "); Size: " >> "${scriptfile}"
sizeidx=0
size=${partsplit[2]}
while [ $size -gt 0 ]; do
sizetext="${size}${sizes[$sizeidx]} ${sizetext}"
size=$(($size/1024))
((sizeidx++))
done
sizetext=($sizetext)
for ((i = 0; i < 2; i++)); do
if [ $i -eq 1 ]; then echo -n ' (' >> "${scriptfile}"; fi
if [[ "${sizetext[$i]: -1:1}" = "s" ]]; then
echo -n "${sizetext[$i]:0:-5} bytes" >> "${scriptfile}"
else
echo -n "${sizetext[$i]:0:-2} ${sizetext[$i]: -2:2}" >> "${scriptfile}"
fi
if [ $i -eq 1 ]; then echo -n ')' >> "${scriptfile}"; fi
done
if [[ "X${partsplit[4]}X" != "XX" ]]; then
echo -n "; Label: \"" >> "${scriptfile}"
echo $(echo -n "${part}" | cut -d' ' -f5-)"\"" >> "${scriptfile}"
else
echo >> "${scriptfile}"
fi
if [[ "${partsplit[3]}" != "swap" ]]; then
echo -e "\tmountpart /dev/disk/by-uuid/${partsplit[1]} \n\t" >> "${scriptfile}"
else
echo -e "\t" >> "${scriptfile}"
fi
done
echo "fi" >> "${scriptfile}"
echo -e "[ok]\nSuccess!\n"
#echo ---; cat $scriptfile; echo ---
else
echo "Script found for disk ID ${disk}"
fi
done
exit
fi
trap 'echo; exit' SIGINT
echo -ne "Using scriptdir \"${scriptdir}\".\nRunning mount..."
mapfile -t mounttable < <(mount)
echo -e " [ok]"
function spin() {
trap 'echo -e "\e[?25h"' SIGINT SIGQUIT SIGKILL
echo -ne "\e[?25l"
if [[ $unicode -eq 1 ]]; then s=$(printf \\u2580\\u259C\\u2590\\u259F\\u2584\\u2599\\u258C\\u259B); m=8; d=0.03; else s='/-\|'; m=4; d=0.07; fi
("$@" & pid=$! ; c=1; while ps -c $pid 2>&1>/dev/null; do echo -ne "\e[s${s:c:1} \e[u"; c=$[c+1]; test $c -eq $m && c=0; sleep $d; done)
echo -ne "\e[?25h"
trap SIGINT SIGQUIT SIGKILL
function diskexists {
disk=/dev/disk/by-id/scsi-SATA_${@}
if [[ ! -L $disk ]]; then
echo "(Disk $0 is not installed)"
else
echo "[Disk ${1}]"
fi
function partop {
if [[ $mode -eq 1 ]]; then
while true; do
echo -n "Unmounting ${1##*/}... "
if ! mountpoint > /dev/null 2>&1 $2; then
echo "(Not mounted, or not a mountpoint)"
break;
fi
if [ ! -d $2 ]; then
echo "error: Not a directory!"
break
fi
cmd="umount $1"
if [[ ! $testmode ]]; then
output="$(${cmd} 2>&1)"
err=$?
else
echo "{would run: ${cmd}} "
fi
if [[ $err = 0 ]]; then
if [[ ! $testmode ]]; then echo "[ok]"; fi
return
else
echo -e "\n== umount error =="
echo -n "${output}"
echo -e "\n=================\n"
c=X;
while [[ ! $c =~ (R|r|P|p|D|d|Q|q) ]]; do read -sn1 -p"[R]etry/Skip [P]artition/Skip [D]isk/[Q]uit? " c; echo $c; done
echo
case $c in
D|d) skipdisk=1; break ;;
P|p) break ;;
Q|q) exit ;;
esac
fi
done
else
if [[ $skipdisk = 1 ]] && [[ $newdisk = 0 ]]; then return; fi
err=0
skipdisk=0
newdisk=0
while true; do
echo -n "${1##*/} -> $2: "
if mountpoint > /dev/null 2>&1 $2; then
echo "(already mounted)"
break;
fi
if [[ $testmode == 0 ]]; then echo echo -n "Mounting"; fi
if [ ! -d $2 ]; then
echo -n " (creating dir $2"
cmd="mkdir -p $2 2>&1"
if [[ ! $testmode ]]; then
output="$(eval $cmd)"
err=$?
else
echo -n " {would run: $cmd}"
fi
echo -n ') '
fi
if [[ $err = 0 ]]; then
if [[ $testmode == 0 ]]; then echo -n '... '; fi
cmd="mount $@"
if [[ ! $testmode ]]; then
output="$(${cmd} 2>&1)"
err=$?
else
echo "{would run: ${cmd}} "
fi
else
echo
fi
if [[ $err = 0 ]]; then
if [[ ! $testmode ]]; then echo "[ok]"; fi
return
else
echo -e "\n== mount error =="
echo -n "${output}"
echo -e "\n=================\n"
c=X;
while [[ ! $c =~ (R|r|P|p|D|d|Q|q) ]]; do read -sn1 -p"[R]etry/Skip [P]artition/Skip [D]isk/[Q]uit? " c; echo $c; done
echo
case $c in
D|d) skipdisk=1; break ;;
P|p) break ;;
Q|q) exit ;;
esac
fi
done
fi
if [[ $1 = "u" ]]; then mode=1; else mode=0; fi
if [[ $1 = "t" ]]; then testmode=1; fi
scripts=(${scriptdir}/*.mount.sh)
for ((i = 0; i < ${#scripts[@]}; i++)); do
newdisk=1
. ${scripts[$i]}
if (($i < ${#scripts[@]} - 1)); then echo; fi
done
echo -ne "\e[?25h"
Hopefully someone else finds this helpful. I am aware of udev/automount; that was overkill, since the disks are always installed, and I don't need a system whose focus is on-the-fly detection of newly inserted media of whatever kind.
-i336
Last edited by i336 (2011-11-10 04:42:08)Thanks. I might use it soon...
Does it automatically make folders named after the volume labels? And does it handle the conversion of spaces and non-alphanumeric characters to octal codes?
I could read the script but it would be faster for everyone reading, if you leave the answer as a reply.
I also think that there should be some major work done on modernizing the fstab, either by replacing it with a better implementation of file system mounting or changing the file structure and adding in better handling of non-alphanumerics. I don't want to have to look up a stupid octal table every time I type in my labels. -
Adobe Creative Cloud can't signin is there alternative to downloading these programs?
I just purchased Adobe Creative Cloud and when went to sign in all it would do is sign me out in which I never got to sign in lol is there alternative way to download this software as I have Photoshop and Lightbloom
Finally, after- how long? - two months? I have uploaded the new Creative Cloud. Only to find that all the programs have been upgraded from CS6 to CC.
This ranks as the worst piece of customer-relations I've ever come across. Even though I asked for instructions the Staff member dealing with me got fed-up and just dumped me.
I kept trying - and today - finally I got it fixed.
It took 20 minutes to download, at 20Mbps! There were no intermediate instructions, I wasn't told what was happening. Suddenly the Install screen disappeared - the new Creative Cloud didn't open, I had to go find it.
Adobe - this is not good. I suggest you find the boss of this team and quietly boot them out of the door. -
Lync Reverse Proxy Alternatives
When migrating from OCS 2007 to Lync 2010, we balked Microsoft’s recommendation to deploy Forefront Threat Management Gateway (or ISA) just to get the reverse proxy services.
TMG is way too expensive and complex for such a limited, simple use case.
I didn't find much information on what people are using as free alternatives to ISA/TMG, so I decided to post this discussion in case there are others out there who are interested.
We decided to use Apache 2.2 on Windows Server 2008 R2.
Here's how we configured it:
Read here to understand what features require a reverse proxy, and follow the steps to configure your FQDNs, Network Adapters and (maybe) obtain an SSL Certificate for the reverse proxy.
http://technet.microsoft.com/en-us/library/gg398069.aspx
Download and install the latest stable release of Apache with OpenSSL on your reverse proxy server.
http://httpd.apache.org/download.cgi
We're using the same certificate on the reverse proxy that we use on our front end server (it has the appropriate SANs), so we need to convert it to PEM format for use with Apache:
Use the Certificates MMC on your front end server to export the certificate and include the private key.
Transfer the resultant .pfx file to your reverse proxy server.
Use OpenSSL to convert your .pfx file to PEM:
openssl pkcs12 -in c:\pathto\yourcert.pfx -out c:\pathto\yourcert.pem –nodes
Separate the private key from the certificate using notepad:
Open the new .pem file and cut the text from the beginning of the file through the end of the “----END RSA PRIVATE KEY----“ tag.
Save that text to a new file named
yourcert.key.
Save
yourcert.pem, which should now only include the certificate.
Copy (or move) the certificate and private key to the Apache configuration directory. We like to use: C:\Program Files (x86)\Apache Software Foundation\Apache2.2\conf\extra\ssl
for storing the certificates.
Edit httpd.conf (typically in
C:\Program Files (x86)\Apache Software Foundation\Apache2.2\conf) to enable and configure the proxy and SSL features:
(See http://httpd.apache.org/docs/2.2/mod/mod_proxy.html
for more information on each directive)
Uncomment the following lines, which will enable proxy and SSL:
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule ssl_module modules/mod_ssl.so
Include conf/extra/httpd-ssl.conf
Add the following lines to configure reverse proxy behavior:
#Be a reverse proxy, not a forward proxy
ProxyRequests Off
#Accept requests from any client to any URL
<Proxy *>
Order Deny,Allow
Allow from all
</Proxy>
#Set the network buffer to improve throughput
ProxyReceiveBufferSize 4096
#Configure the Reverse Proxy to forward all requests to your front end server on 4443
ProxyPass / https://yourfrontend.domain.com:4443/
ProxyPassReverse / https://yourfrontend.domain.com:4443/
#Preserve Host Headers for Lync
ProxyPreserveHost On
Optionally, configure logging directives, bindings and server name.
Save and close httpd.conf
Edit httpd-ssl.conf (typically in conf\extra):
Configure the session cache:
Uncomment:
SSLSessionCache “dbm:C:/Program Files (x86)/Apache Software Foundation/Apache2.2/logs/ssl_scache”
Comment out:
SSLSessionCache “shmcb:C:/Program Files (x86)/Apache Software Foundation/Apache2.2/logs/ssl_scache(512000)”
Locate the <VirtualHost _default_:443> tag and configure the following:
Add the following directive:
SSLProxyEngine On
Configure the path to your SSL Certificate saved in step 3-5 above:
SSLCertificateFile “C:\Program Files (x86)\Apache Software Foundation\Apache2.2\conf\extra\ssl\yourcert.pem”
Configure the path to your private key saved in step 3-5 above:
SSLCertificateKeyFile “C:\Program Files (x86)\Apache Software Foundation\Apache2.2\conf\extra\ssl\yourcert.key”
Optionally, configure the SSLCACertificateFile (you can download the appropriate bundle from your CA).
Optionally, configure logging directives.
Save and close httpd-ssl.conf
Restart the Apache2.2 service
Configure public DNS records and appropriate firewall rules to allow public http/https traffic to the external interface of your reverse proxy, and to allow the internal interface of
the reverse proxy to talk to the front end Lync server on 8080 and 4443.
From an external connection, test connectivity through the reverse proxy:
Test
https://dialin.company.com (friendly URL for getting dial-in information, if you’re using voice conferencing)
Test the Lync Web App by setting up an online meeting and following the URL to join the meeting.
You can force the use of the web app by appending ?sl= to the end of the meet.company.com link.
See this for more information http://blogs.technet.com/b/jenstr/archive/2010/11/30/launching-lync-web-app.aspx
Hope this information is helpful and saves some of you some money and trouble.
Please contact me if you need further clarification or see any mistakes in my notes.
Best regards,
Kenneth Walden
Enterprise Systems Supervisor
GSD&M
Austin, TXI'd like to thank you for this article. We were setting up Apache RP for Lync .... needless to say they weren't too excited to learn this new (and highly complex with lots of specific undocumented requirements) Microsoft product. Anyways, your
blog saved me a LOT of headache. I owe you big time.
AWESOME JOB.
-Greg
*****EDIT***
Decided to come back in there and post good information. We had issues with EXTERNAL and ANONYMOUS users being able to attend a meeting. The "DIALUP" url was working fine but the "MEETING" url was broken. On our WFE servers we were getting
the event error as below. Turns out that our reverse proxy was not set to "PROXYPRESERVEHOST ON". Once we put that in there ALL was good.
Notice that the MEET portion was the only thing that was really broken. So, if you can get DIALUP to work, but MEET doesn't ... your RP is working to FW the 443 to the 4443 correctly but you're RP is sending the wrong HEADER. Look for
http://10.x.x.x/meet/ or soemthing in the event logs.
Log Name: Application
Source: ASP.NET 2.0.50727.0
Date: 11/16/2011 1:26:35 PM
Event ID: 1309
Task Category: Web Event
Level: Warning
Keywords: Classic
User: N/A
Computer: OneofMyInternalWFEservers.local
Description:
Event code: 3005
Event message: An unhandled exception has occurred.
Event time: 11/16/2011 1:26:35 PM
Event time (UTC): 11/16/2011 6:26:35 PM
Event ID: b2039ecd0a62482284030f62e1e639d8
Event sequence: 129
Event occurrence: 28
Event detail code: 0
Application information:
Application domain: /LM/W3SVC/34578/ROOT/meet-1-129658725547585993
Trust level: Full
Application Virtual Path: /meet
Application Path: C:\Program Files\Microsoft Lync Server 2010\Web Components\Join Launcher\Ext\
Machine name: MYWFE.local
Process information:
Process ID: 14204
Process name: w3wp.exe
Account name: NT AUTHORITY\NETWORK SERVICE
Exception information:
Exception type: HttpException
Exception message: Server cannot append header after HTTP headers have been sent.
Request information:
Request URL:
https://FQDN:4443/meet/MyName/456456
User host address: gatewayIP
User:
Is authenticated: False
Authentication Type:
Thread account name: NT AUTHORITY\NETWORK SERVICE
Thread information:
Thread ID: 7
Thread account name: NT AUTHORITY\NETWORK SERVICE
Is impersonating: False
Stack trace: at System.Web.HttpHeaderCollection.SetHeader(String name, String value, Boolean replace)
at Microsoft.Rtc.Internal.WebServicesAuthFramework.OCSAuthModule.EndRequest(Object source, EventArgs e)
at System.Web.HttpApplication.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)
Custom event details:
Event Xml:
<Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
<System>
<Provider Name="ASP.NET 2.0.50727.0" />
<EventID Qualifiers="32768">1309</EventID>
<Level>3</Level>
<Task>3</Task>
<Keywords>0x80000000000000</Keywords>
<TimeCreated SystemTime="2011-11-16T18:26:35.000000000Z" />
<EventRecordID>4483</EventRecordID>
<Channel>Application</Channel>
<Computer>XXXXXXXXXXXXXXXXXX</Computer>
<Security />
</System>
<EventData>
<Data>3005</Data>
<Data>An unhandled exception has occurred.</Data>
<Data>11/16/2011 1:26:35 PM</Data>
<Data>11/16/2011 6:26:35 PM</Data>
<Data>b2039ecd0a62482284030f62e1e639d8</Data>
<Data>129</Data>
<Data>28</Data>
<Data>0</Data>
<Data>/LM/W3SVC/34578/ROOT/meet-1-129658725547585993</Data>
<Data>Full</Data>
<Data>/meet</Data>
<Data>C:\Program Files\Microsoft Lync Server 2010\Web Components\Join Launcher\Ext\</Data>
<Data>SNKXS300</Data>
<Data>
</Data>
<Data>14204</Data>
<Data>w3wp.exe</Data>
<Data>NT AUTHORITY\NETWORK SERVICE</Data>
<Data>HttpException</Data>
<Data>Server cannot append header after HTTP headers have been sent.</Data>
<Data>XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX</Data>
<Data>/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX</Data>
<Data>10.71.1.1</Data>
<Data>
</Data>
<Data>False</Data>
<Data>
</Data>
<Data>NT AUTHORITY\NETWORK SERVICE</Data>
<Data>7</Data>
<Data>NT AUTHORITY\NETWORK SERVICE</Data>
<Data>False</Data>
<Data> at System.Web.HttpHeaderCollection.SetHeader(String name, String value, Boolean replace)
at Microsoft.Rtc.Internal.WebServicesAuthFramework.OCSAuthModule.EndRequest(Object source, EventArgs e)
at System.Web.HttpApplication.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)
</Data>
</EventData>
</Event> -
What is a quick alternative to launching an enterprise DPS app if Apple Store rejects the App? We are under a major deadline and can't wait for Apple to approve. We want to host the app elsewhere. How do we host our DPS app on our client's website? Thanks.
Unless I misunderstand the question, you can't do what you're asking to do. Apple doesn't allow you to bypass their store and host public apps on a website. The exception is an enterprise app, which requires an Enterprise account with both Apple and Adobe. This type of enterprise app can be distributed only within the company. If that's what you want to do, you can learn more here:
Digital Publishing Suite Help | Creating viewer apps for private distribution
Distributing enterprise iOS viewer applications with Digital Publishing Suite | Adobe Developer Connection
Another option is to add the development app to several devices and use those for your demo. -
What is the use of Alternative Calculation Type =2 and 4
Dear Friends
In pricing procedure in gross value, Net value for Item and Net value has Alternative calucation type is 2.
What is the use of it?
Without using it these value line are also fetching net value then what is the work of it. Please give me detail information with its effects in pricing condition tab page in sales document.
Thanking You
ArunArun biswal,
Correct Biswal. We have at varoius stages within Pricing procedure the "net value" which is calculated. Not only the alternative calculation type "2" is used if you notice carefully they are stored as subtotals at various levels.
For Ex Gross Value --> Subtotal =1 --> Calc type = 2
similarly for Net value for Item --> Subtotal =2 --> Calc type = 2
Net value 2 --> Subtotal =3 --> Calc type = 2
See, these are used to calculate the net value at various levels in pricing. The calculation Type has got a set of routines that will facilitate us in pricing. SAP has provided certain clauclated formulas or routines to facilitate us during calculation within pricing . Here the "2" is used for calculation without tax and store it as subtotal and display it or use it for further calculations.
We can use this "netvalue" amount for further calculations. It is used for clarity purpose when you issue a statement to customer. (like Confirmation order) at various levels like discount amt involved, Freight involved, Rebate amount invloved.....
Even without this Calc type or using sub total u can proceed....
Finally we have TOTAL --> Subtotal =A --> Calc type = 4
In the above line we have Calc type as 4, which means when you use TAX this calc type is used .
Routines are used to facilitate your process....
Regards
Sathya -
Like we have If Not Exists in T-SQL, Is there any alternative in MDX
Hi All,
I am a newbie in MDX. I am trying to execute MDX query through SSIS Execute SQL Task. I have set Single Row as a result set. Every thing is fine, But the problem arise when the query does not return any result.
Because , this is the property of Execute SQL Task that it fails , If result set is SET and query does not return any value.
This occurance is handle in T-SQL by used of If Not Exits/If Exists , Do we have something over here i.e. MDX ?
If not then what might be the alternative for this.Hi Shadab,
Try writing iif() (if and only if) to handle this situation.
Check this for syntax and examples:
http://msdn.microsoft.com/en-IN/library/ms145994(v=sql.105).aspx
If you have any issues please let me know.
Please vote as helpful or mark as answer, if it helps Regards, Anand -
Java Web Start Error in through codebase url with SSL
I have created one Java web-start plugin application in swing which is launched from PHP site at browser plugin.
All things were working fine, but when we implemented SSL in our site it stopped working. And when we try to start the application from browser it thorws error like:
Unable to launch Application.
In Java console it puts following log:
JNLP Ref (...): NULL !
#### Java Web Start Error:
#### null
Following is my JNLP file:
<jnlp spec="1.0+" codebase="https://<<server_domain>>/MyPlugin/">
<information>
<title>Test Plugin</title>
<vendor>The Java(tm) Tutorial</vendor>
<homepage href="null"/>
<description>Test Plugin</description>
<description kind="short">Test Plugin</description>
<offline-allowed/>
</information>
<security>
<all-permissions/>
</security>
<update check="timeout" policy="always"/>
<resources>
<java version="1.7+"/>
<jar href="http://<<server_domain>>/MyPluginJar.jar" download="eager" main="false"/>
</resources>
<application-desc>
<argument>test</argument>
<argument>test</argument>
<argument>test</argument>
<argument>test</argument>
<argument>test</argument>
</application-desc>
</jnlp>
The issue started only after implementation of SSL in our site. Please provide any solution for this. Many thanks in advance.
P.S. My Jar file is signed by third party authorized certificate.Have you tried using Rosetta?
Maybe you are looking for
-
Sending Strings Over GKSession - How to stop some craziness?
Sounds simple, right? But the tricky part is I am trying to retain the header structure from GKTank... I am quite desperate for help at this point as I've been flailing around on this all day and all night.... All my other events use this structure a
-
TV Screen says "No signal" when I try to use apple TV. Was working. ie Little Apple symbol would appear on TV screen, but now get "No signal" Internet connection working (light on apple TV)...tried new HDMI cable but still "No signal" HELP please
-
Change your avatar picture without facebook ( HOW TO)
Facebook is not the only option to change your avatar picture How? 1. find out your user-id.. its is in bar were the webadress is when you logged in on spotify.com it is a 6 sigure number in my case. Think it will always be numbers 2. copy this link
-
How to manage Itunes Match library on IPhone.
I hate seeing my whole library even though it is not downloaded. Can't they have a My local library tab and a separate match tab so I can choose what I want put onto my local phone? I have turned of the show all music option in the music settings how
-
ICloud access for mail on MacBook Pros
Starting several days ago, email access via iCloud has been disrupted and will not connect. Web access to iCloud is unimpaired. Apple support indicates that the problem has been experienced by others using MacBook Pros--but not iPads or iPhone as i